nicuvlad76

Untitled

Nov 5th, 2022
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <fstream>
  2. #include <vector>
  3. #define N 100005
  4. #define M 666013
  5. using namespace std;
  6. ifstream fin("gasti.in");
  7. ofstream fout("gasti.out");
  8.  
  9. vector <int> G[N];
  10. int n, m;
  11.  
  12. int Gasti[N], Membri[N], Cate[N];
  13. int cnt;
  14. void DFS(int node, int gasca)
  15. {
  16.     cnt++;
  17.     Gasti[node]=gasca;
  18.     vector<int> :: iterator it;
  19.     for(it=G[node].begin(); it!=G[node].end(); ++it)
  20.     {
  21.         if(!Gasti[*it]) DFS(*it, gasca);
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.   fin>>n>>m;
  28.   for(int i=1;i<=m;++i)
  29.   {
  30.       int x,y;
  31.       fin>>x>>y;
  32.       G[x].push_back(y);
  33.       G[y].push_back(x);
  34.   }
  35.   int gasti=0, max1=-1, max2=-1;
  36.   for(int i=1;i<=n;++i)
  37.   {
  38.      if(!Gasti[i])
  39.      {
  40.          cnt=0;
  41.          DFS(i,++gasti);
  42.          Membri[gasti]=cnt;
  43.          Cate[Membri[gasti]]++;
  44.          if(Membri[gasti]>max1){
  45.             max2=max1;
  46.             max1=Membri[gasti];
  47.          }
  48.          else if(Membri[gasti]>max2)
  49.               max2=Membri[gasti];
  50.      }
  51.   }
  52.   long long x,y;
  53.   if(max1!=max2)
  54.   {
  55.       x=(Cate[max1]*max1)% M;
  56.       y=(Cate[max2]*max2)% M;
  57.   }
  58.   else
  59.   {
  60.       x=(max1*max2)%M;
  61.       y=(Cate[max1]*(Cate[max1]-1)/2)% M;
  62.   }
  63.   x=(x*y)%M;
  64.   fout<<gasti<<" "<<x;
  65.   return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment