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 {0}, b {0};
  32. int ile_v {0};
  33. int ile_e {0};
  34.  
  35. cin >> ile_v >> ile_e;
  36.  
  37. wektor.resize(ile_v + 1);
  38. odwiedzone.resize(ile_v + 1, 0);
  39. komponent.resize(ile_v + 1, 0);
  40.  
  41. for (int i = 0; i < ile_e; i++) {
  42. cin >> a >> b;
  43. wektor[a].push_back(b);
  44. wektor[b].push_back(a);
  45. }
  46.  
  47. int componentId = 0;
  48. for (int i = 1; i <= ile_v; i++) {
  49. if (odwiedzone[i] == 0) {
  50. componentId++;
  51. BFS(i, componentId);
  52. }
  53. }
  54.  
  55. int ile_q {0};
  56. cin >> ile_q;
  57.  
  58. for (int i = 0; i < ile_q; i++) {
  59. int p, k;
  60. cin >> p >> k;
  61. if (komponent[p] == komponent[k]) {
  62. cout << "TAK\n";
  63. } else {
  64. cout << "NIE\n";
  65. }
  66. }
  67.  
  68. return 0;
  69. }
Success #stdin #stdout 0.01s 5276KB
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