fork download
  1. /*
  2. B
  3. Cho một đồ thị vô hướng gồm n đỉnh và m cạnh, biểu diễn đồ thị này bằng một danh sách kề
  4. - Vẫn nhập u-v từ input, nhưng thay vì ma trận kề
  5. - Mình có một vector<int> G[N] (nói cách khác là mình sẽ có N cái vector để biểu diễn ma trận kề)
  6. - G[u] = {Tập hợp chứa các đỉnh v mà từ u có thể đi tới}.
  7. */
  8.  
  9. // ~~ icebear ~~
  10. #include <bits/stdc++.h>
  11. using namespace std;
  12. vector<int> G[300005];
  13.  
  14. int main() {
  15. ios_base::sync_with_stdio(0);
  16. cin.tie(0); cout.tie(0);
  17. int n, m;
  18. cin >> n >> m;
  19. while(m--) {
  20. int u, v;
  21. cin >> u >> v;
  22. G[u].push_back(v);
  23. G[v].push_back(u);
  24. }
  25.  
  26. for(int i = 1; i <= n; i++) {
  27. // Có 2 cách duyệt vector
  28. cout << G[i].size() << ' ';
  29.  
  30. // c1: duyệt theo chỉ số
  31. // for(int j = 0; j < (int)G[i].size(); j++) cout << G[i][j] << ' ';
  32.  
  33. // c2 : duyệt dùng con trỏ
  34. for(int j : G[i]) cout << j << ' '; // lúc này thì j chính là một giá trị trong G[i]
  35. cout << '\n';
  36. }
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0.01s 10668KB
stdin
Standard input is empty
stdout
0 
0