1 条题解

  • 0
    @ 2023-3-13 12:11:09

    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
    上传者