1 solutions

  • 0
    @ 2025-3-3 16:24:07

    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);//如果找到以这个节点接着遍历 
    }
    
    
    • 1

    Information

    ID
    9994
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By