Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. const int mxn = 1000; // ให้ โหนดมากสุดแค่ 1000
  6.  
  7. std::vector<int> adj[mxn]; // adjacency list
  8.  
  9. void dfs(int cur){ // cur เป็นตัวปัจจุบันที่อยู่
  10. cout << "current node is " << cur << endl;
  11. for(int nx : adj[cur]) {//ไล่ดูลูกทุกตัวของ cur (ชื่อ nx)
  12. dfs(nx); // เดินไป nx เลย
  13. }
  14. }
  15. int main(){
  16. int sz;
  17. cin >> sz;
  18. vector<int> v; //ประกาศ vector <type>
  19. // cout << v[0] << endl; run แล้ว fail เพราะ v[0] ยังไม่มี
  20. for(int i = 0, inp; i !=sz; ++i){
  21. cin >> inp;
  22. v.push_back(inp); //เอาค่าที่รับเข้ามา(val) ไปใส่ในท้ายสุดของ v (v[i])
  23. }
  24. //การแสดงผลของ vector
  25. //1. ใช้ index วิ่งใน [ 0, v.size() )
  26. for (int i = 0; i != v.size(); ++i){
  27. cout <<"Index " << i << " value is : " << v[i] << endl; //คล้ายๆ array นั่นล่ะ
  28. }
  29. //2. ใช้ iterator วิ่งใน [ v.begin(), v.end() )
  30. std::vector<int>::iterator itr; //ประกาศ iterator ที่ใช้กับ vector<int> ชื่อ itr
  31. for(itr = v.begin(); itr != v.end(); ++itr){
  32. int val = *itr; //เอา iterator ชี้ไปที่ val ใน container ช่องที่ v[i]
  33. cout << "value is :" << val << endl;
  34. }
  35. //สามารถใช้ auto itr = v.begin() แทนก็ได้ (C++11 only)
  36. //3. range based loop (C++11 only)
  37. for(int val : v){ //ดู val(element valu) ทุกตัวใน v
  38. cout << val << " ";
  39. }
  40. cout << endl;
  41.  
  42.  
  43. // application : adjacency list
  44. int n, m; // จำนวน vertex , จำนวน edge
  45. cin >> n >> m;
  46. for (int i = 0, a, b; i != m; ++i){
  47. cin >> a >> b; // รับรายละเอียด edge ว่าเชื่อมจุด a กับจุด b
  48. adj[a].push_back(b);// บอกว่า u เชื่อมไป v
  49. // ถ้าเป็น undirected graph
  50. // adj[v].push_bacl(u) บอกว่า v เชื่อมไป u
  51. }
  52. int s; //จุดเริ่มต้น
  53. cin >> s;
  54. dfs(s);
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement