8 9
1 2 //0號邊
1 3 //1號邊
1 4 //2號邊
2 5 //3號邊
2 6 //4號邊
3 7 //5號邊
4 7 //6號邊
4 8 //7號邊
7 8 //8號邊
0 1 2 //1號頂點連著0、1、2號邊
3 4 //2號頂點連著3、4號邊
5 //3號頂點連著5號邊
6 7 //4號頂點連著6、7號邊
//5號頂點沒有邊
//6號頂點沒有邊
8
//7號頂點連著8號邊
//8號頂點沒有邊
1 #include<iostream>
2 #include<algorithm>
3 #include<vector>
4 using namespace std;
5
6 struct edge {
7 int st, ed;
8 };
9 vector <int> map[100001];
10 vector <edge> vec;
11 int main() {
12
13 int n, m;
14 cin >> n >> m;
15 for (int i = 0; i < m; i++) {
16 int st, ed;
17 cin >> st >> ed;
18 vec.push_back({ st, ed }); //初始化存邊的s陣列
19 }
20
21 for (int i = 0; i < m; i++)
22 map[vec[i].st].push_back(i);
23 //初始化map陣列,vec[i].st表示頂點,在該頂點加入其對應的邊
24
25 return 0;
26 }
1 void dfs(int x) {
2 cout << x<<" ";
3
4 for (int i = 0; i < map[x].size(); i++)
5 {
6 int j = vec[map[x][i]].ed;
7 if (!st[j])
8 {
9 st[j] = 1;
10 dfs(j);
11 }
12 }
13 }
void add(int a, int b) {
e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}