Cow Picnic S
2024-09-08 10:23:21
题目描述:
K(1≤K≤100)只奶牛分散在N(1≤N≤1000)个牧场.现在她们要集中起来进餐.牧场之间有M(1≤M≤10000)条有向路连接,而且不存在起点和终点相同的有向路.她们进餐的地点必须是所有奶牛都可到达的地方.那么,有多少这样的牧场呢?
输入:
第一行三个数,K,N,M
接下来K+1行,每行一个数表示牛所在的牧场
接下来M+1行,每行两个数A,B,表示有一条A到B的有向边
输出:
符合题意的牧场个数
样例输入:
2 4 4
2
3
1 2
1 4
2 3
3 4
样例输出:
2
思路:
此题就是先建图,相邻两个农场在一起,再dfs每个农场,此时就需要用到标记数组,如果,此点没被走过,那么将其dfs,那么这个点的所能到的牧场的数量+1,最后再去判断每个牧场,如果这个牧场能与所有牧场联通,就是一个符合条件的牧场。最后输出总量即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int vis[1010];
int k,n,m,ans;
int cow[1010],farm[1010];
vector <int> G[1010];
void dfs(int x)
{
vis[x]=1;
cow[x]++;
for(int i=0;i<G[x].size();i++){
if(vis[G[x][i]] == 0){
dfs(G[x][i]);
}
}
}
int main()
{
int A,B;
cin>>k>>n>>m;
for(int i=1;i<=k;i++) cin>>farm[i];
for(int i=1;i<=m;i++)
{
cin>>A>>B;
G[A].push_back(B);
}
for(int i=1;i<=k;i++) {
for(int j=1;j<=n;j++){
vis[j]=0;
}
dfs(farm[i]);
}
for(int i=1;i<=n;i++){
if(cow[i]==k){
ans++;
}
}
cout<<ans;
return 0;
}
最新文章
- Spark基础知识汇总
- Beginning Scala study note(9) Scala and Java Interoperability
- Excel自文本导入内容时如何做到单元格内换行
- ICA和PCA
- 【学】jQuery的源码思路5——增加class的操作
- C++对象模型详解
- Android 设置EditText光标Curso颜色及粗细
- WebDriver一些常见问题的解决方法【转】
- oracle工具 sqlplus 用户管理
- Linux进程笔记
- Longest Substring Without Repeating Characters - 哈希与双指针
- androidStudio通过svn进行版本控制
- js实现轮播图效果(附源码)--原生js的应用
- 《设计模式之禅》--MVC框架
- FCC JS基础算法题(9):Mutations(比较字符串)
- docker下运行labview2010
- c标签取数组中的对象值的2种方法
- linux达人养成计划学习笔记(三)—— 帮助命令
- 使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef
- Java编辑PPT的柱状图,与内嵌的Excel联动
热门文章
- 用 Python 为接口测试自动生成用例
- 用NetworkX生成并绘制(带权)无向图
- centos7安装zabbix5.0
- 机构:DARPA
- 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson
- 455. Assign Cookies - LeetCode
- 482. License Key Formatting - LeetCode
- 人脸识别库 face_recognition
- 隐式转换导致的cpu负载近100%
- 『忘了再学』Shell基础 — 32、Shell中test测试命令详解