提出 #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 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |