提出 #1809516


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> P;

#define fi first
#define se second
#define repl(i,a,b) for(ll i=(ll)(a);i<(ll)(b);i++)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout<<#x"="<<x<<endl
#define mmax(x,y) (x>y?x:y)
#define mmin(x,y) (x<y?x:y)
#define maxch(x,y) x=mmax(x,y)
#define minch(x,y) x=mmin(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt __builtin_popcount

#define INF INT_MAX/3

struct UnionFind{
  vector<int> v;
  UnionFind(int n) : v(n, -1) {}
  void init(){ for(int i = 0;i < v.size();i++)v[i]=-1; }
  int find(int x) { return v[x] < 0 ? x : v[x] = find(v[x]); }
  bool unite(int x, int y) {
    x = find(x); y = find(y);
    if (x == y) return false;
    if (-v[x] < -v[y]) swap(x, y);
    v[x] += v[y]; v[y] = x;
    return true;
  }
  bool root(int x) { return v[x] < 0; }
  bool same(int x, int y) { return find(x) == find(y); }
  int size(int x) { return -v[find(x)]; }
};

ll n,m;
vector<P> es;
ll cnt[3];

int main(){
  cin>>n>>m;
  UnionFind uf(n);
  rep(i,m){
    ll a,b;
    cin>>a>>b;
    a--;b--;
    es.push_back(P(a,b));
    uf.unite(a,b);
  }
  cnt[0]=1;
  cnt[1]=1;
  repl(i,2,n){
    if(uf.same(i,0))cnt[0]++;
    else if(uf.same(i,1))cnt[1]++;
    else cnt[2]++;
  }
  ll res=0;
  rep(i,cnt[2]+1){
    ll rest=cnt[2]-i;
    ll p1=cnt[0]+i,p2=cnt[1]+rest;
    maxch(res,p1*(p1-1)/2+p2*(p2-1)/2-m);
  }
  cout<<res<<endl;
	return 0;
}

提出情報

提出日時
問題 D - Shock
ユーザ KOKOROSyntaxSato
言語 C++14 (GCC 5.4.1)
得点 100
コード長 1686 Byte
結果 AC
実行時間 61 ms
メモリ 2804 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 3
AC × 23
セット名 テストケース
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23
ケース名 結果 実行時間 メモリ
a01 AC 1 ms 256 KiB
a02 AC 1 ms 256 KiB
a03 AC 1 ms 256 KiB
b04 AC 1 ms 256 KiB
b05 AC 2 ms 640 KiB
b06 AC 57 ms 2804 KiB
b07 AC 58 ms 2804 KiB
b08 AC 30 ms 1784 KiB
b09 AC 58 ms 2804 KiB
b10 AC 58 ms 2804 KiB
b11 AC 1 ms 256 KiB
b12 AC 61 ms 2804 KiB
b13 AC 60 ms 2804 KiB
b14 AC 61 ms 2804 KiB
b15 AC 61 ms 2804 KiB
b16 AC 61 ms 2804 KiB
b17 AC 61 ms 2804 KiB
b18 AC 58 ms 2804 KiB
b19 AC 58 ms 2804 KiB
b20 AC 4 ms 512 KiB
b21 AC 11 ms 896 KiB
b22 AC 61 ms 2804 KiB
b23 AC 61 ms 2804 KiB