图论—DFS

#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