dfs中为什么搜索一进来输出不可以?
查看原帖
dfs中为什么搜索一进来输出不可以?
273640
ZeePing楼主2024/6/11 20:32
#include<bits/stdc++.h>
using namespace std;
int maxx,m;
int g[501][501];  
int dis[501],path[1005];   
int beginn=9999999;
int cnt;
void dfs(int i){
	cout<<i<<endl;  //这里有问题, 为什么都是在下面这个for循环结束后用栈记录。 这里搜索一进来就输出不可以? 
    for(int j=beginn;j<=maxx;j++)
        if(g[i][j]){
            g[i][j]--;
            g[j][i]--;
            dfs(j);
        } 
}
int main(){

    cin>>m;
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        g[x][y]++;
        g[y][x]++;
        dis[x]++;
        dis[y]++;
        maxx=max(maxx,max(x,y));
        beginn=min(beginn,min(x,y));
    }
    int start=beginn;   
    int sum=0;
    for(int i=beginn;i<=maxx;i++)
        if(dis[i]%2){ 
            start=i;
            break;
        }
    
    dfs(start);
    return 0;
}


2024/6/11 20:32
加载中...