邻接表-图的遍历

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<vector>
 5 using namespace std;
 6 vector<int> v[100010];
 7 bool vis[100010];
 8 int maxn;
 9 void dfs(int x){
10 
11     if(maxn<x)
12         break;
13     else
14     maxn=max(maxn,x);
15     vis[x]=1;
16     for(int i=0;i<v[x].size();i++){
17         if(vis[v[x][i]]==0) dfs(v[x][i]);
18     }
19 }
20 int main()
21 {
22     int n,m;
23     int x,y;
24     cin>>n>>m;
25     for(int i=1;i<=m;i++)
26     {
27         cin>>x>>y;
28         v[x].push_back(y);
29     }
30     for(int i=1;i<=n;i++)
31     {
32         memset(vis,0,sizeof(vis));
33         maxn=i;
34         dfs(i);
35         cout<<maxn<<' ';
36     }
37 }
View Code
原文地址:https://www.cnblogs.com/572354941hnit/p/10834776.html