90求调,#10TLE
查看原帖
90求调,#10TLE
1342607
LCY2015楼主2025/6/25 16:58
#include<bits/stdc++.h>
using namespace std;
int n,cnt[100001],ccnt,q,m;
pair<int,int> b[200001];
vector<int> a[100001],ans;
bool cmp(pair<int,int> a,pair<int,int> b){
        return a.second<b.second;
}
void dfs(int d){
        for(int i=0;i<a[d].size();i++){
                if(a[d][i]==0) continue;
                int x=a[d][i];
                a[d][i]=0;
                dfs(x);
        }
        ans.push_back(d);
}
int main(){
        cin>>n>>m;
        for(int i=1;i<=m;i++){
                cin>>b[i].first>>b[i].second;
                cnt[b[i].first]++;
                cnt[b[i].second]++;
        }
        sort(b+1,b+m+1,cmp);
        for(int i=1;i<=m;i++) a[b[i].first].push_back(b[i].second);
        for(int i=1;i<=100000;i++){
                if(cnt[i]%2==1) ccnt++;
        }
        if(ccnt!=0&&ccnt!=2){
                cout<<"No";
                return 0;
        }
        if(ccnt==0){
                for(int i=1;i<=100000;i++){
                        if(cnt[i]>0){
                                q=i;
                                break;
                        }
                }
        }else{
                for(int i=1;i<=100000;i++){
                        if(cnt[i]%2==1){
                                q=i;
                                break;
                        }
                }
        }
        dfs(q);
        for(int i=ans.size()-1;i>=0;i--) cout<<ans[i]<<" ";
        return 0;
}
2025/6/25 16:58
加载中...