数据过水
  • 板块P2712 摄像头
  • 楼主xieyubo
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/2 15:30
  • 上次更新2024/8/2 16:27:28
查看原帖
数据过水
580351
xieyubo楼主2024/8/2 15:30

以下是本蒟蒻的AC代码:

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N=510;
int n,x,m,y,a[N],din[N];
bool vis[N];
vector<int>g[N],st;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d",a+i,&m);
		vis[a[i]]=true;
		while(m--){
			scanf("%d",&y);
			g[x].push_back(y);
			din[y]++;
		}
	}
	queue<int>q;
	for(int i=1;i<=n;i++)
		if(!din[a[i]])q.push(a[i]);
	while(!q.empty()){
		int k=q.front();
		q.pop(),st.push_back(k);
		for(auto i:g[k])
			if(--din[i]==0)q.push(i);
	}
	if(st.size()==n)puts("YES");
	else printf("%d",n-st.size());
	return 0; 
}

据观察发现,在输入时,while(m--)中,我写的是g[x].push_back(y),但是实际上我没有输入x,也就是说这一行代码等价于g[0].push_back(y),但得了满分,很显然,这是错的

然而,当我改为g[a[i]].push_back(y)且不改后面时,我得了70分。

非常离谱,建议加强数据

2024/8/2 15:30
加载中...