Advertisement
FHVirus

Untitled

Jan 6th, 2021
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | None | 0 0
  1. int main(){
  2.     ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  3.     cin >> n >> m;
  4.     for(int i = 1; i <= n; ++i) num[i] = i;
  5.  
  6.     for(int a, b; m; --m){
  7.         cin >> a >> b;
  8.         // 合併兩塊
  9.         int anum = num[a], bnum = num[b];
  10.         if(anum != bnum){
  11.             for(int i = 1; i <= n; ++i){
  12.                 if(num[i] == bnum) num[i] = anum;
  13.             }
  14.         }
  15.  
  16.         // 對於每一塊計算答案
  17.         long long ans = 0;
  18.         vector<bool> vis(n, false);
  19.         for(int i = 1; i <= n; ++i){
  20.             if(!vis[i]){
  21.                 long long siz = 0;
  22.                 for(int j = i; j <= n; ++j){
  23.                     if(num[j] == num[i]){
  24.                         ++siz;
  25.                         vis[j] = true;
  26.                     }
  27.                 }
  28.                 ans += siz * (siz - 1) / 2;
  29.             }
  30.         }
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement