// DFS.cpp : 定义控制台应用程序的入口点。
//
//
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
bool isconnected(vector<vector<int>>);
void DFS(vector<vector<int>>,int );
vector<bool> visited;
#include <iostream>
#include <vector>
using namespace std;
bool isconnected(vector<vector<int>>);
void DFS(vector<vector<int>>,int );
vector<bool> visited;
int _tmain(int argc, _TCHAR* argv[])
{
int Vnumber = 6 //图的顶点个数
vector<vector<int>> G(Vnumber);
for(int i=0;i<G.size();i++) //输入图的连接关系
//从0开始直到最后一个 ,图用邻接表的形式存储
{
while(true) //输入你要判断的图 输完一个顶点 输入1000,
{ //然后开始下一个顶点的邻居输入
int n;
cin>>n;
if(n==1000)
{
cout<<"next"<<endl;
break;
}
G[i].push_back(n);
}
}
{
int Vnumber = 6 //图的顶点个数
vector<vector<int>> G(Vnumber);
for(int i=0;i<G.size();i++) //输入图的连接关系
//从0开始直到最后一个 ,图用邻接表的形式存储
{
while(true) //输入你要判断的图 输完一个顶点 输入1000,
{ //然后开始下一个顶点的邻居输入
int n;
cin>>n;
if(n==1000)
{
cout<<"next"<<endl;
break;
}
G[i].push_back(n);
}
}
bool flag = isconnected(G);
if(flag ==true)
cout<<"connected"<<endl;
if(flag ==true)
cout<<"connected"<<endl;
return 0;
}
}
bool isconnected(vector<vector<int>> G)
{
for(int i=0;i<G.size();i++)
{
visited.push_back(false);
{
visited.push_back(false);
}
int v = 0; // 从0开始搜索,如果能遍访所有顶点 则说明连通
DFS(G,v);
bool flag = true;
for(int i=0;i<visited.size();i++)
{
if(visited[i] == false)
flag = false;
}
return flag;
int v = 0; // 从0开始搜索,如果能遍访所有顶点 则说明连通
DFS(G,v);
bool flag = true;
for(int i=0;i<visited.size();i++)
{
if(visited[i] == false)
flag = false;
}
return flag;
}
void DFS(vector<vector<int>> G, int v)
{
visited[v] = true;
int m = G[v].size();
int n = 0;
for(int w = G[v][0];n<m;w = G[v][n])
{
n = n+1;
if(visited[w] == false)
DFS(G,w);
if(n==m)
break;
}
int m = G[v].size();
int n = 0;
for(int w = G[v][0];n<m;w = G[v][n])
{
n = n+1;
if(visited[w] == false)
DFS(G,w);
if(n==m)
break;
}
}
本文出自 “无聊之地” 博客,请务必保留此出处http://quxiao.blog.51cto.com/933548/278326