当前位置: 首页 > article >正文

洛谷P2853 [USACO06DEC] Cow Picnic S

题目链接:[USACO06DEC] Cow Picnic S - 洛谷、

题目描述n 个牧场,编号从 1 到 n,每个牧场之间可能有通道。共有 k 只奶牛,每只奶牛位于一个特定的牧场。现在我们需要找到所有奶牛都能到达的牧场。对于每个牧场 i,如果所有 k 只奶牛都能到达该牧场,那么这个牧场就是一个有效的集会地点。

输入格式

第一行:三个整数 K、N、M,分别表示奶牛的数量、牧场的数量和有向路径的数量。
接下来 K 行,每行一个整数,表示第 i 只奶牛所在的牧场编号。
接下来 M 行,每行两个整数 A 和 B (1 ≤ A, B ≤ N, A ≠ B),表示从牧场 A 到牧场 B 有一条有向路径。

输出格式

输出一个整数,表示所有奶牛都能通过有向路径到达的牧场数量。

解题思路:从k个奶牛分别dfs只有s[i] = k 时候才让ans + 1,图用邻接矩阵才存储。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N = 10010; 
int g[N][N];
int cow[N],s[N];
bool vis[N];

int k,n,m; 
int ans;

int read()
{
    int t = 0, f = 1;
    char ch = getchar();
    while(ch > '9' || ch < '0') {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch <= '9' && ch >= '0') {
        t = t * 10 + ch - '0';
        ch = getchar();
    }
    return t * f;
} 

void dfs(int x)
{
	vis[x] = true;
	s[x]++;
	for(int i = 1; i <= n; i++)
	{
		if(!vis[i] && g[x][i]) dfs(i);
	}
}

int main() 
{
   
   k = read(),n = read(),m = read();
   
   for(int i = 1; i <= k; i++)  cow[i] = read();
   
   while(m--)
   {
   	 int u = read(),v = read();
   	 g[u][v] = 1;
   }
   
   for(int i = 1; i <= n; i++)
   {
   	  dfs(cow[i]);
   	  memset(vis,false,sizeof(vis));
   }
    
   for(int i = 1; i <= n; i++) 
   {
   	  if(s[i] == k) ans ++;
   }
   
   cout<<ans;
   
   return 0;
}


http://www.kler.cn/a/513653.html

相关文章:

  • HTML 表单和输入标签详解
  • Linux系统的第一个进程是什么?
  • iOS 网络请求: Alamofire 结合 ObjectMapper 实现自动解析
  • Java-数据结构-二叉树习题(2)
  • ovs实现lb负载均衡
  • vue+高德API搭建前端Echarts图表页面
  • 如何查看某用户的Git提交数
  • 【c/c++】内存对齐
  • WebSocket知识点笔记(一)
  • 公有云环境下如何管理IP地址
  • 探索云原生可观测性:技术与团队协作的深度结合
  • Java 资源管理教程:掌握 close 方法、Cleaner 类与 Runtime.addShutdownHook
  • Python 电脑定时关机工具
  • string底层实现细节
  • APK知识框架
  • AI视频生成技术迎来突破性发展期
  • 大一计算机的自学总结:归并排序及归并分治
  • Git版本控制 – 使用HEAD
  • 【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯
  • Arthas工具详解
  • 03垃圾回收篇(D1_垃圾收集器算法底层导论)
  • 解锁Java正则表达式替换的高级玩法
  • 【矩形拼接——分类讨论】
  • 蓝桥与力扣刷题(73 矩阵置零)
  • Maven多环境打包方法配置
  • SpringBoot拦截器