1 条题解
-
0
2743 题解
个人是先计算出每个人能到达的所有地方,再判断每个地方的可到达人数是否=k
具体代码如下:
#include<bits/stdc++.h>
using namespace std;
int k,n,m;
int ans;
int vis[1005];//访问
int a[105];//人
int b[1005]={0};//地点能到达人数
int c[10005][5];//路径
void dfs(int x){//x为当前地点
for(int i=1;i<=m;i++){//判断可到达地点 if(c[i][1]==x&&vis[c[i][2]]==0){ b[c[i][2]]++; vis[c[i][2]]=1; dfs(c[i][2]); } }
}
int main(){
cin>>k>>n>>m;//输入 for(int i=1;i<=k;i++){ cin>>a[i]; } for(int i=1;i<=m;i++){ cin>>c[i][1]; cin>>c[i][2]; } for(int i=1;i<=k;i++){ memset(vis,0,sizeof(vis)); vis[a[i]]=1; b[a[i]]++; dfs(a[i]); } for(int i=1;i<=n;i++){ if(b[i]==k){ ans++; } } cout<<ans;//输出 return 0;
}
信息
- ID
- 2743
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 30
- 已通过
- 10
- 上传者