样例没过,但AC了
查看原帖
样例没过,但AC了
1176398
xuyixuan_123楼主2025/6/26 21:51

样例中我的代码输出的是2 3 1 1,但是交上去后 AC 了,有没有大佬能解释一下。

#include<bits/stdc++.h>
using namespace std;
const int maxn=5010;
int n,m,cnt;
int head[maxn],deg[maxn],a[maxn];
queue<int> que;
struct edge{
	int to,nxt,w;
}e[100010];
void init(){
	memset(head,-1,sizeof(head));
	memset(deg,0,sizeof(deg));
	cnt=0;
}
void addedge(int u,int v){
	e[cnt].to=v;
	e[cnt].nxt=head[u];
	head[u]=cnt++;
}
int main(){
	cin>>n>>m;
	init();
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		addedge(u,v);
		deg[v]++;
	}
	int sum=0,flag=0;
	for(int i=1;i<=n;i++){
		if(deg[i]==0){
			que.push(i);
			sum++;
		}
	}
	if(sum>1){
		flag=1;
	}
	int ccnt=1;
	while(!que.empty()){
		int u=que.front();
		que.pop();
		sum=0;
		a[ccnt++]=u;
		for(int i=head[u];~i;i=e[i].nxt){
			int v=e[i].to;
			deg[v]--;
			if(deg[v]==0){
				sum++;
				que.push(v);
			}
		}
		if(sum>1){
			flag=1;
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<"\n";
	}
	cout<<flag;
	return 0;
}

AC记录

2025/6/26 21:51
加载中...