【求调】【玄2关】p7771
  • 板块学术版
  • 楼主_WangZhongYv_
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/31 10:07
  • 上次更新2025/7/31 15:18:48
查看原帖
【求调】【玄2关】p7771
1345326
_WangZhongYv_楼主2025/7/31 10:07

玄学60pts

#include<bits/stdc++.h>
#define inf 200005
using namespace std;
int n,m;
struct Edge{
	int to;
	bool cans;
};
vector<Edge> t[inf];
bool cans[inf];
int ru_du[inf];
int chu_du[inf];
int st[inf];
int cnt;
int lu_jing[inf];
void dfs(int x)
{
	for(int i=st[x];i<t[x].size();i++)
	{
		if(t[x][i].cans==1) continue;
		t[x][i].cans=1;
		st[x]++;
		dfs(t[x][i].to);
	}
	cnt++;
	lu_jing[cnt]=x;
}
int pos;
int chu_ci,ru_ci;
bool cmp(Edge a,Edge b)
{
	return a.to<b.to;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		t[x].push_back(Edge{y,0});
		ru_du[y]++;
		chu_du[x]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(abs(ru_du[i]-chu_du[i])>1){
			cout<<"No";
			return 0;
		}
		if(chu_du[i]-ru_du[i]==1){
			chu_ci++;
			pos=i;
		}
		if(ru_du[i]-chu_du[i]==1){
			ru_ci++;
		}
	}
	if((ru_ci==0 && chu_ci==0)||(ru_ci==1 && chu_ci==1))
	{
		for(int i=1;i<=n;i++) sort(t[i].begin(),t[i].end(),cmp);
		dfs(pos);
		for(int i=cnt;i>=1;i--) cout<<lu_jing[i]<<" ";
	}
	else cout<<"No";
	return 0;
}
2025/7/31 10:07
加载中...