过!!!了!!!
2024-12-07 22:21:02
发布于:广东
11阅读
0回复
0点赞
因为做题太少导致眼高手低(
#include<bits/stdc++.h>
using namespace std;
int k,n,m,cow[101],th,cnt,d;
bitset<1>vis[1001],arr[1001][1001];
vector<int>tu[1001];
void dfs(int n){
arr[th][n]=1;
for(int i=0;i<tu[n].size();++i){
if(vis[tu[n][i]]==0){
vis[tu[n][i]]=1;
arr[n][tu[n][i]]=1;
dfs(tu[n][i]);
}
}
}
int main(){
cin>>k>>n>>m;
for(int i=1;i<=n;++i)arr[i][i]=1;
for(int i=1;i<=k;++i)scanf("%d",&cow[i]);
for(int j=1;j<=m;++j){
int u,v;
scanf("%d %d",&u,&v);
tu[u].push_back(v);
}
for(int i=1;i<=k;++i){
th=cow[i];
memset(vis,0,sizeof(vis));
dfs(cow[i]);
}
bool can;
for(int i=1;i<=n;++i){
can=1;
for(int j=1;j<=k;++j){
if(arr[cow[j]][i]==0){
can=0;
}
}
cnt+=can;
}
cout<<cnt<<endl;
return 0;
}
这里空空如也
有帮助,赞一个