fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. vector<vector<int>> wektor;
  7. vector<int> odwiedzone;
  8. vector<int> komponent;
  9.  
  10. void BFS(int v, int componentId) {
  11. queue<int> q;
  12. q.push(v);
  13. odwiedzone[v] = 1;
  14. komponent[v] = componentId;
  15.  
  16. while (!q.empty()) {
  17. int p = q.front();
  18. q.pop();
  19.  
  20. for (int j : wektor[p]) {
  21. if (odwiedzone[j] == 0) {
  22. odwiedzone[j] = 1;
  23. komponent[j] = componentId;
  24. q.push(j);
  25. }
  26. }
  27. }
  28. }
  29.  
  30. int main() {
  31. int a, b;
  32. int ile_v, ile_e;
  33.  
  34. cin >> ile_v >> ile_e;
  35.  
  36. wektor.resize(ile_v + 1);
  37. odwiedzone.resize(ile_v + 1, 0);
  38. komponent.resize(ile_v + 1, 0);
  39.  
  40. for (int i = 0; i < ile_e; i++) {
  41. cin >> a >> b;
  42. wektor[a].push_back(b);
  43. wektor[b].push_back(a);
  44. }
  45.  
  46. int componentId = 0;
  47. for (int i = 1; i <= ile_v; i++) {
  48. if (odwiedzone[i] == 0) {
  49. componentId++;
  50. BFS(i, componentId);
  51. }
  52. }
  53.  
  54. int ile_q;
  55. cin >> ile_q;
  56.  
  57. for (int i = 0; i < ile_q; i++) {
  58. int p, k;
  59. cin >> p >> k;
  60. if (komponent[p] == komponent[k]) {
  61. cout << "TAK\n";
  62. } else {
  63. cout << "NIE\n";
  64. }
  65. }
  66.  
  67. return 0;
  68. }
Success #stdin #stdout 0.01s 5288KB
stdin
8 6
1 2
5 7
3 2
5 8
1 3
2 4
4 
1 4
6 7
7 5
3 8
stdout
TAK
NIE
TAK
NIE