#include<iostream>
using namespace std;
const int MAXV=1000;//最大顶点数
int n,m,G[MAXV][MAXV]={0};//邻接矩阵
bool vis[MAXV]={false};//标记数组
void DFS(int u,int depth)
{
vis[u]=true;//标记u已访问
cout<<u;
for(int v=0;v<n;v++)
{
if(vis[v]==false&&G[u][v]==1)//如果有对应边,且边终点未被访问
{
DFS(v,depth+1);//继续递归访问
}
}
}
void DFSTrave()
{
for(int u=0;u<n;u++)
{
if(vis[u]==false)//如果u未被访问
{
DFS(u,1);
}
}
}
int main()
{
int u,v;//边的起点和终点
cin>>n>>m;//输入顶点数、边数
for(int i=0;i<m;i++)
{
cin>>u>>v;
G[u][v]=1;
}
DFSTrave();
return 0;
}
图论—DFS
最新推荐文章于 2024-03-02 10:29:00 发布