解题思路: 从每头奶牛的节点开始做搜索,用dfs走遍所有路径(走到底,不回头)。每遍历到一个节点该节点遍历次数就加一,最后所有奶牛都搜索完之后,检查每个节点的遍历次数,如果该节点的遍历次数等于奶牛数则该节点能被所有奶牛走到。

坑:

1.每头奶牛搜索的时候要有清空的vis数组记录走没走过该点,否则可能路径会重复循环。

2.要用邻接矩阵mp[i][j]来记录节点的连接关系 ,其中i 是起点的编号 , j  是终点的编号, 矩阵的值为1时表示i 到 j 可以连接,0表示没有。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1010;
4 int k,n,m,l[N]={0},vis[N]={0},mp[N][N]={0},vis1[N]={0};
5 void dfs(int x)
6 {
7 vis1[x]=1;
8 vis[x]++;
9 for(int i=1;i<=n;i++)
10 {
11 if(mp[x][i]==1&&vis1[i]==0)
12 {
13 dfs(i);
14 }
15 }
16 }
17 int main()
18 {
19 cin>>k>>n>>m;
20 for(int i=1;i<=k;i++)
21 {
22 scanf("%d",&l[i]);
23 }
24 for(int i=1;i<=m;i++)
25 {
26 int a1,b;
27 scanf("%d%d",&a1,&b);
28 mp[a1][b]=1;
29 }
30 for(int i=1;i<=k;i++)
31 {
32 memset(vis1,0,sizeof(vis1));
33 dfs(l[i]);
34 }
35 int ans=0;
36 for(int i=1;i<=n;i++)
37 {
38 if(vis[i]==k) ans++;
39 }
40 cout<<ans<<endl;
41 return 0;
42 }

更新了:

有优化方案:

新思路≈图存储方式、遍历方式优化

就用一个vector(二维)来记录一个节点跟所有连接节点的关系。

还有亿个细节值得注意:

因为这里是有向表所以 1 edge[a1].push_back(b);

如果是无向表 1 edge[a1].push_back(b); 2 edge[b].push_back(a1);

以及dfs中的for循环要改一下。i的范围:  [0,edge[x].size()-1]

效果:

存储效率,循环效率更高

效果如图所示,提交编号为188624的为优化前的提交记录耗时80ms,提交编号为189772的为优化后的提交记录耗时9ms

程序:

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1005;
4 int k,n,m,l[N]={0},vis[N]={0},mp[N][N]={0},vis1[N]={0};
5 vector<int> edge[N];
6 void dfs(int x)
7 {
8 vis1[x]=1;
9 vis[x]++;
10 for(int i=0;i<edge[x].size();i++)
11 {
12 if(vis1[edge[x][i]]==0)
13 {
14 dfs(edge[x][i]);
15 }
16 }
17 }
18 int main()
19 {
20 cin>>k>>n>>m;
21 for(int i=1;i<=k;i++)
22 {
23 scanf("%d",&l[i]);
24 }
25 for(int i=1;i<=m;i++)
26 {
27 int a1,b;
28 scanf("%d%d",&a1,&b);
29 edge[a1].push_back(b);
30 }
31 for(int i=1;i<=k;i++)
32 {
33 memset(vis1,0,sizeof(vis1));
34 dfs(l[i]);
35 }
36 int ans=0;
37 for(int i=1;i<=n;i++)
38 {
39 if(vis[i]==k) ans++;
40 }
41 cout<<ans<<endl;
42 return 0;
43 }

Cow Picnic S 更新了(在后面)的更多相关文章

  1. Bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 深搜,bitset

    1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 554  Solved: 346[ ...

  2. BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐( dfs )

    直接从每个奶牛所在的farm dfs , 然后算一下.. ----------------------------------------------------------------------- ...

  3. 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐

    1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 432  Solved: 270[ ...

  4. bzoj1648 / P2853 [USACO06DEC]牛的野餐Cow Picnic

    P2853 [USACO06DEC]牛的野餐Cow Picnic 你愿意的话,可以写dj. 然鹅,对一个缺时间的退役选手来说,暴力模拟是一个不错的选择. 让每个奶牛都把图走一遍,显然那些被每个奶牛都走 ...

  5. POJ3256:Cow Picnic

    Cow Picnic Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5432   Accepted: 2243 Descri ...

  6. 洛谷——P2853 [USACO06DEC]牛的野餐Cow Picnic

    P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...

  7. 洛谷 P2853 [USACO06DEC]牛的野餐Cow Picnic

    P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...

  8. POJ 3256 Cow Picnic

    Cow Picnic Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4928   Accepted: 2019 Descri ...

  9. 洛谷P2853 [USACO06DEC]牛的野餐Cow Picnic

    题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ 100) cows is grazing in one of N ...

  10. BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐

    Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is graz ...

随机推荐

  1. java将秒数转换为时分秒格式

    /** * 转换时间格式为xx小时xx分xx秒 * @param second xxxxx */ public String changeTimeFormat(String second) { Int ...

  2. 陪你去看 Lodash.js 起步

    lodash 起步(数组) Lodash 是一个较为流行的 JavaScript 的实用工具库. 在开发过程中如果能熟练使用一些工具库提供的方法,有利于提高开发效率. 笔者从 API 上入手,不分析其 ...

  3. Web浏览器Linux Shell(shellinabox解决通用区服务器Linux Shell访问很麻烦的问题)

    问题背景 通用区服务器的Linux Shell访问,比较麻烦 需要动态密码(手机上装Token)连跳板机,再用跳板机上的终端工具连Linux Shell 改进方法 使用shellinabox,就能直接 ...

  4. 总结uni-app遇到的坑持续跟新

    1.uni.navigateTo跳转没有反应 官方示例 //在起始页面跳转到test.vue页面并传递参数 uni.navigateTo({ url: 'test?id=1&name=unia ...

  5. ZWS物联网云平台为电器设备智能化,提升产品竞争力

    从目前的消费趋势来看,家居电器设备的消费发力点在于年轻人.他们基本由"80"."90后"组成,对于消费理念更加的新颖,对于新产品与新观念更加容易接受.不过相对的 ...

  6. 165 pbi-utils 使用文档

    165 pbi-utils 使用文档 一.背景 先来说一下为什么会有 pbi-utils 这个小工具吧.在我日常做演示的示例文件的时候,每次都要重新搞一次 Power BI Desktop,就想能不能 ...

  7. springboot +mybatis (@autowried 注入mapper :爆红)

    问题描述:Could not autowire. No beans of XXXXmapper' type found 问题相关页面: 解决方式一:@mapper  接口计入@Repository 解 ...

  8. vuex环境配置及使用

    vuex环境搭建 1.下载vuex,如果你是开发Vue2,请下载vuex3版本 npm i vuex@3 2.搭建vuex的环境配置 ​ 创建 src/state/index.js 文件 //导入Vu ...

  9. 你不知道的Map家族中的那些冷门容器

    概述 本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap.EnumMap.IdentityHashMap, 想必大家在平时的工作中也很少用到,或者压根不知道他们的特性以及适 ...

  10. 组策略编辑器(gpedit.msc)找不到文件解决方法

    打开[此电脑]中的C盘,依次打开Windows-system32-gpedit.msc,或者输入:C:\Windows\System32\gpedit.msc,查看是否存在gpedit.msc文件(没 ...