#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define siz 1000005
vector <int> vec[siz];
int color[siz];
int node,edge;
void reset(){
for(int i=0;i<=node;i++){
color[i]=0;
vec[i].clear();
}
}
void dfs(int n){
color[n]=1;
for(int i=0;i<vec[n].size();i++){
int v=vec[n][i];
if(!color[v]){
dfs(v);
}
}
color[n]=2;
}
int main()
{
int u,v;
//freopen("input.txt","r",stdin);
while(scanf("%d%d",&node,&edge)==2){
reset();
for(int i=0;i<edge;i++){
scanf("%d%d",&u,&v);
vec[u].push_back(v);
vec[v].push_back(u);
}
for(int i=1;i<=node;i++)
if(!color[i])
dfs(i);
}
return 0;
}
Wednesday, October 31, 2012
Depth First Search (DFS)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment