【悬 1 关】20pts 求调
查看原帖
【悬 1 关】20pts 求调
737242
linch吃瓜猫楼主2025/1/29 10:30

rt,代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int n,m,ans[maxn],in[maxn],out[maxn],cnt;
vector<vector<int> >e(maxn);
void dfs(int x){
	for(auto it=e[x].begin();it<e[x].end();it++){
		int v=*it;
		e[x].erase(it);
		dfs(v);
	}
	ans[++cnt]=x;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		e[u].push_back(v);
		in[v]++;out[v]++;
	}
	int s=0,t=0;
	for(int i=1;i<=n;i++){
		if(in[i]==out[i]+1){
			if(t){
				cout<<"No\n";
				return 0;
			}
			else t=i;
		}
		else if(out[i]==in[i]+1){
			if(s){
				cout<<"No\n";
				return 0;
			}
			else s=i;
		}
		else if(in[i]!=out[i]){
			cout<<"No\n";
			return 0;
		}
	}
	for(int i=1;i<=n;i++){
		sort(e[i].begin(),e[i].end());
	}
	if(!s) s=1;
	dfs(s);
	if(cnt<m+1){
		cout<<"No\n";
		return 0;
	}
	reverse(ans+1,ans+cnt+1);
	for(int i=1;i<=cnt;i++){
		cout<<ans[i]<<" ";
	}
	cout<<"\n";
	return 0;
}

样例全过,但是 WA 20pts,求调。

我也不知道大年初一有没有人帮我调。

2025/1/29 10:30
加载中...