MAGCARI

Untitled

Oct 10th, 2022
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. /*
  2.     Task    : New Year Party
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 10 October 2022 [18:37]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. vector<int > g[410];
  10. int mark[410],comp[410];
  11. int cnt = 0;
  12. void dfs(int i){
  13.     comp[cnt]++;
  14.     mark[i] = 1;
  15.     for(auto x:g[i]){
  16.         if(mark[x]) continue;
  17.         dfs(x);
  18.     }
  19. }
  20. int main(){
  21.     cin.tie(0)->sync_with_stdio(0);
  22.     cin.exceptions(cin.failbit);
  23.     int q,n,m,u,v;
  24.     cin >> q;
  25.     while(q--){
  26.         cin >> n >> m;
  27.         while(m--){
  28.             cin >> u >> v;
  29.             g[u].push_back(v);
  30.             g[v].push_back(u);
  31.         }
  32.         memset(mark,0,sizeof mark);
  33.         memset(comp,0,sizeof comp);
  34.         int mx = 0,mn = 1e9;
  35.         cnt = 0;
  36.         for(int i=1;i<=n;i++){
  37.             if(mark[i]) continue;
  38.             cnt++;
  39.             dfs(i);
  40.             mx = max(mx,comp[cnt]);
  41.             mn = min(mn,comp[cnt]);
  42.             // printf("cnt mx mn: %d %d %d\n",cnt,mx,mn);
  43.         }
  44.         if(cnt > 2)
  45.             cout << "-1\n";
  46.         else if(cnt == 2)
  47.             cout << mx - mn << '\n';
  48.         else
  49.             cout << mx%2 << '\n';
  50.         for(int i=1;i<=n;i++)
  51.             g[i].clear();
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment