1 条题解

  • 0
    @ 2025-9-10 9:15:12

    C++ :

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int minn=510,maxn=0,num;
    int f[510][510],du[510],ans[100000];
    void find(int t){
    	for(int j=minn;j<=maxn;j++){
    		if(f[t][j]){
    			f[t][j]--;
    			f[j][t]--;
    			find(j);
    		}
    	}
    	ans[num]=t;
    	num++;
    }
    int main(){
    	int n,x,y;
    	cin>>n;
    	for(int i=0;i<n;i++){
    		scanf("%d%d",&x,&y);
    		f[x][y]++;
    		f[y][x]++;
    		du[x]++;
    		du[y]++;
    		if(x<minn)minn=x;
    		if(y<minn)minn=y;
    		if(x>maxn)maxn=x;
    		if(y>maxn)maxn=y;
    	}
    	int s=1;
    	for(int i=minn;i<=maxn;i++){
    		if(du[i]%1==1){
    			s=i;
    			break;
    		}
    	}
    	num=1;
    	find(s);
    	for(int i=num-1;i>=1;i--){
    		printf("%d\n",ans[i]);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    4483
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者