fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int N, M, K, B[100001], G[100001];
  5. vector<vector<int> > adjList;
  6. vector<bool> visited;
  7. vector<int> gossip;
  8.  
  9. /*
  10. Graph Traversal
  11. DFS = Depth-First Search --> mendalam dulu
  12. BFS = Breadth-First Search --> melebar dulu
  13. /**/
  14. void DFS(int node) {
  15. gossip.push_back(B[node]);
  16. visited[node] = true;
  17. // for(int i = 0; i < adjList[node].size(); i++)
  18. for(auto next : adjList[node]) {
  19. if(!visited[next])
  20. DFS(next);
  21. }
  22. }
  23.  
  24. int main() {
  25. cin >> N >> M >> K;
  26. for(int i = 0; i < N; i++)
  27. cin >> B[i];
  28. for(int i = 0; i < M; i++)
  29. cin >> G[i];
  30. adjList.resize(N);
  31. for(int i = 0; i < K; i++) {
  32. int P, Q;
  33. cin >> P >> Q;
  34. P--; Q--;
  35. adjList[P].push_back(Q);
  36. adjList[Q].push_back(P);
  37. }
  38. /*
  39. for(int i = 0; i < N; i++) {
  40. cout << i << ":";
  41. for(auto node : adjList[i])
  42. cout << " " << node;
  43. cout << endl;
  44. }
  45. /**/
  46. visited.resize(N, false);
  47. for(int i = 0; i < N; i++)
  48. if(!visited[i]) {
  49. gossip.clear();
  50. DFS(i);
  51. /*
  52. for(auto bebek : gossip)
  53. cout << bebek << " ";
  54. cout << endl;
  55. /**/
  56. }
  57. /*
  58. 1. Adjacency Matrix
  59. int adjMatrix[8][8];
  60. 1 2 3 4 5 6 7 8
  61. 1 0 . . . . . . 1
  62. 2 . 0 . . . . 1 .
  63. 3 . . 0 . 1 1 . .
  64. 4 . . . 0 . . . .
  65. 5 . . 1 . 0 1 . .
  66. 6 . . 1 . 1 0 . 1
  67. 7 . 1 . . . . 0 .
  68. 8 1 . . . . 1 . 0
  69.  
  70. 2. Adjacency List
  71. vector<vector<int> > adjList(8);
  72. vector<int> adjList[8];
  73. 1: 8
  74. 2: 7
  75. 3: 6, 5
  76. 4:
  77. 5: 6, 3
  78. 6: 8, 3, 5
  79. 7: 2
  80. 8: 1, 6
  81.  
  82. 3. Edge List
  83. vector<pair<int, int> > edgeList;
  84. (1, 8), (2, 7), (3, 5), (3, 6), (5, 6), (6, 8)
  85. /**/
  86. return 0;
  87. }
Success #stdin #stdout 0.01s 5284KB
stdin
8 4 6
10 20 30 40 50 60 70 80
30 40 50 60
1 8
2 7
3 5
3 6
5 6
6 8
stdout
1: 8
2: 7
3: 5 6
4:
5: 3 6
6: 3 5 8
7: 2
8: 1 6
10 80 60 30 50 
20 70 
40