图!!!
无向图
#include<iostream>
#include<cstring>
using namespace std;
int n,m,u,v, tot, head[1001];
bool vis[1001];
struct edge{
int u,v,next;
}g[100001];
void addedge(int u,int v){
g[++tot].u=u;//新申请空间
g[tot].v=v;
g[tot].next=head[u];
head[u]=tot; //从尾插入
}
void dfs(int u){
cout<<u<<" ";
vis[u]=true;
for(int i=head[u];i!=-1;i=g[i].next){//注意i的取值和边界
int v=g[i].v;
if(!vis[v])dfs(v);
}
}
无向图判有环
using namespace std;
int n,m,u,v;
bool vis[1001],flag;
vector<int> g[1001];
void dfs(int u,int fa){
vis[u]=true;
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(v==fa) continue;//v为u的父节点,忽略不计
if(!vis[v]) dfs(v,u);
else flag=true;//访问到已访问过的点,有环
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int i=1;i<=n;i++){
if(!vis[i]) dfs(i,-1);//-1表示i为根节点
}
if(flag) cout<<"have circle";
else cout<<"have no circle";
}