daily pastebin goal
57%
SHARE
TWEET

Untitled

a guest Mar 22nd, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top