玄关求调,图论,20pts,dfs,其他全WA,感谢大佬
  • 板块学术版
  • 楼主Sgt_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/24 10:59
  • 上次更新2024/7/24 11:31:22
查看原帖
玄关求调,图论,20pts,dfs,其他全WA,感谢大佬
1223722
Sgt_楼主2024/7/24 10:59

题目传送门

#include<bits/stdc++.h>
#define ll long long
#define maxn 1005
using namespace std;
int k,n,m,ans,no;
int a[105],vis[maxn];
vector<int>p[maxn];
void dfs(int u){//当前为u
//cout<<u<<" ";
	vis[u]=1;
	
	for(int i=1;i<p[u].size();i++){
		for(int j=1;j<=k;j++)if(p[u][i]==a[j])a[j]=-1;
		if(!vis[i])dfs(i);
	}

}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>k>>n>>m;
	for(int i=1;i<=k;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		p[v].push_back(u);//反向建边
	}
	for(int i=1;i<=n;i++){
		no=0;
		memset(vis,0,sizeof(vis));
		vis[i]=1;
		for(int j=1;j<=k;j++)if(a[j]==i)a[j]=-1;
		dfs(i);
		for(int j=1;j<=k;j++){
			if(a[j]!=-1)no=1;
		}
		if(!no)ans++;
	}
	cout<<ans;
	return 0;
}
2024/7/24 10:59
加载中...