Advertisement
a53

Unire

a53
Feb 3rd, 2020
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define N 1000001
  3. using namespace std;
  4. vector <int> nod[N];
  5. deque <int> coada;
  6. int n,viz[N],nrc;
  7. ifstream f("unire.in");
  8. ofstream g("unire.out");
  9.  
  10. int BFS(int Nod)
  11. {
  12. int x,NodMin=n+1;
  13. coada.push_back(Nod);
  14. if(Nod<NodMin)
  15. NodMin=Nod;
  16. viz[Nod]=nrc;
  17. while(!coada.empty())
  18. {
  19. x=coada.front();
  20. coada.pop_front();
  21. for(unsigned int i=0;i<nod[x].size();++i)
  22. if(!viz[nod[x][i]])
  23. {
  24. if(nod[x][i]<NodMin)
  25. NodMin=nod[x][i];
  26. coada.push_back(nod[x][i]),viz[nod[x][i]]=nrc;
  27. }
  28. }
  29. return NodMin;
  30. }
  31.  
  32. int main()
  33. {
  34. int m,c;
  35. f>>n>>m>>c;
  36. int x,y;
  37. while(m--)
  38. f>>x>>y,nod[x].push_back(y),nod[y].push_back(x);
  39. int NodMin;
  40. unsigned long long int sol=0;
  41. for(int i=1;i<=n;++i)
  42. if(!viz[i])
  43. {
  44. ++nrc,NodMin=BFS(i);
  45. if(NodMin!=1)
  46. sol+=NodMin+1;
  47. }
  48. if(c==1)
  49. g<<--nrc;
  50. else
  51. g<<sol;
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement