// DFS.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
using namespace std;
bool isconnected(vector>);
void DFS(vector>,int );
vector  visited;
int _tmain(int argc, _TCHAR* argv[])
{
   int Vnumber = 6                              //图的顶点个数
   vector>  G(Vnumber);  
   for(int i=0;i                                                           //从0开始直到最后一个 ,图用邻接表的形式存储 
   {
               
            while(true)                                    //输入你要判断的图 输完一个顶点 输入1000,
      {                                                           //然后开始下一个顶点的邻居输入
              int n;
        cin>>n;
        if(n==1000)          
        {
         cout<<"next"<         break;
        }
        G[i].push_back(n);
     
      }
   }
   bool flag = isconnected(G);
   if(flag ==true)
    cout<<"connected"<
 
 return 0;
}

bool isconnected(vector> G)
{
 for(int i=0;i {
  visited.push_back(false);
 }
 
 int v = 0;                                         // 从0开始搜索,如果能遍访所有顶点 则说明连通
 DFS(G,v);
 bool flag = true;
 for(int i=0;i {
   if(visited[i] == false)
    flag = false;
 
 }
   
 return flag;
 

}

void DFS(vector> G, int v)                    
{
    visited[v] = true;
 int m = G[v].size();
 int n = 0;
 for(int w = G[v][0];n {
            n = n+1;
      if(visited[w] == false)
       DFS(G,w);
      if(n==m)
       break;
 
 }
 
}

转载于:https://blog.51cto.com/quxiao/278326