请问这份代码为什么会WA?
查看原帖
请问这份代码为什么会WA?
432183
JoeBiden2020楼主2021/12/19 14:13
#include<bits/stdc++.h>
using namespace std;
int e[1001][1001],k,n,pos[1001],ans,m;
bool vis[1001],OK[1001][1001];
void dfs(int u){//遍历 
	if(vis[u])return;
	vis[u]=1;
	for(int i=1;i<=n;i++){
		if(i==u)continue;
		if(e[u][i])dfs(i);
	}
}
void solve(){
	for(int i=1;i<=k;i++){
		for(int j=1;j<=n;j++){
			memset(vis,0,sizeof(vis));
			dfs(pos[i]);
			if(vis[j])OK[pos[i]][j]=1;//若到达过,标记 
		}
	}
	bool flag;
	for(int i=1;i<=k;i++){
		flag=1;//枚举奶牛 
		for(int j=1;j<=n;j++){//枚举点 
			if(!OK[pos[i]][j]){//只要有一只奶牛到不了就不行 
				break;flag=0;
			}
		}
		if(flag)ans++;//所有奶牛都能到达 
	}
}
int main(){
	cin>>k>>n>>m;
	for(int i=1;i<=k;i++)cin>>pos[i];
	for(int i=1;i<=m;i++){
		int u,v;cin>>u>>v;
		e[u][v]=1;
	}
	solve();
	cout<<ans;
}
2021/12/19 14:13
加载中...