Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <algorithm>
- #include <vector>
- #include <map>
- #include <queue>
- #include <set>
- using namespace std;
- struct top
- {
- int num;
- bool was;
- vector <top*> next;
- };
- top* newtop(int num)
- {
- top* prom = new top();
- prom->num = num;
- prom->was = false;
- return prom;
- }
- void findbreas(top* Top)
- {
- queue <top*>nexta;
- nexta.push(Top);
- while (nexta.size() != 0)
- {
- top* prom = nexta.front();
- nexta.pop();
- for (auto i = prom->next.begin(); i != prom->next.end(); i++)
- {
- if ((*i)->was != true)
- {
- nexta.push(*i);
- (*i)->was = true;
- }
- }
- }
- }
- int main()
- {
- int n, k, m;
- int prom, promk;
- cin >> n >> k >> m;
- map<int, vector<int>> stans;
- map<int, top*>graf;
- for (int i = 1; i <= n; i++)
- {
- top* New = newtop(i);
- graf[New->num] = New;
- }
- for (int i = 1; i <= k; i++)
- {
- cin >> prom >> promk;
- graf[prom]->next.push_back(graf[promk]);
- graf[promk]->next.push_back(graf[prom]);
- }
- int svaz = 0;
- for (auto i = graf.begin(); i != graf.end(); i++)
- {
- if (i->second->was != true)
- {
- findbreas(i->second);
- svaz++;
- }
- }
- cout << svaz - 1<< endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment