为什么开O2就会RE10分?
查看原帖
为什么开O2就会RE10分?
600834
Skadiiiii楼主2024/9/18 13:05

开O2 RE10分

不开O2 就AC了

问下大佬们是什么原因

#include<bits/stdc++.h>
using namespace std;
int n,m,st,ed;
int ind[101101],oud[101101];
int lst[101101];
vector<int> a[101101];
stack<int> stk;
int dfs(int x)
{
	for(int i=lst[x];i<a[x].size();i=lst[x])
	{
		lst[x]=i+1;
		dfs(a[x][i]);
	}
	stk.push(x);
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		a[u].push_back(v);
		ind[v]++,oud[u]++;
	}
	int ls=0,le=0;
	bool flag1=1,flag2=1;
	for(int i=1;i<=n;i++)
	{
		if(ind[i]!=oud[i])
		{
			flag1=0;
			if(oud[i]-ind[i]==1) ls=st,st=i;
			if(ind[i]-oud[i]==1) le=ed,ed=i;
		}
		sort(a[i].begin(),a[i].end());
	}
	if(ls||le)flag2=0;
	if(flag1) st=1;
	else if(!flag2){printf("No");return 0;}
	dfs(st);
	while(!stk.empty()) printf("%d ",stk.top()),stk.pop();
	return 0;
}
2024/9/18 13:05
加载中...