1 条题解
-
0
C++ :
#include<iostream> #include<cstring> #include<cstdio> using namespace std; bool a[110][110]; bool flag[110]; int n,e; void init(); void dfs(int x); int main() { //freopen("dfs1.in","r",stdin); //freopen("dfs5.out","w",stdout); init(); dfs(1); return 0; } void init() { cin>>n>>e; memset(flag,0,sizeof(flag)); memset(a,0,sizeof(a)); int x,y; for(int i=1;i<=e;++i) { cin>>x>>y; a[x][y]=1;//无向图处理双向 a[y][x]=1; } } void dfs(int x) { cout<<x<<' '; flag[x]=1;//把遍历点设为已访问 for(int i=1;i<=n;++i) //寻找相邻连通的下一个节点 if(!flag[i]&&a[x][i]==1) dfs(i);//如果找到以这个节点接着遍历 }
Pascal :
program acm21182; const maxn=100; type node=record u,v,next:longint; end; var num,i,j,k,n,e,u,v,t:longint; graph:array[1..maxn,1..maxn] of longint; vis:array[1..maxn] of boolean; procedure dfs(x:longint); var i:longint; begin if k=0 then begin write(x); k:=k+1; end else write(' ',x); vis[x]:=true; for i:=1 to n do if (not vis[i]) and (graph[x,i]>0) then begin graph[x,i]:=0; graph[i,x]:=0; dfs(i); end; end; procedure init; var i:longint; begin fillchar(graph,sizeof(graph),0); readln(n,e); for i:=1 to e do begin readln(u,v); graph[u,v]:=1; graph[v,u]:=1; end; end; begin fillchar(vis,sizeof(vis),0); init; k:=0; dfs(1); end.
- 1
信息
- ID
- 2107
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者