Cow Picnic S 更新了(在后面)

解题思路: 从每头奶牛的节点开始做搜索,用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 更新了(在后面)的更多相关文章
- Bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 深搜,bitset
1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 554 Solved: 346[ ...
- BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐( dfs )
直接从每个奶牛所在的farm dfs , 然后算一下.. ----------------------------------------------------------------------- ...
- 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 432 Solved: 270[ ...
- bzoj1648 / P2853 [USACO06DEC]牛的野餐Cow Picnic
P2853 [USACO06DEC]牛的野餐Cow Picnic 你愿意的话,可以写dj. 然鹅,对一个缺时间的退役选手来说,暴力模拟是一个不错的选择. 让每个奶牛都把图走一遍,显然那些被每个奶牛都走 ...
- POJ3256:Cow Picnic
Cow Picnic Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5432 Accepted: 2243 Descri ...
- 洛谷——P2853 [USACO06DEC]牛的野餐Cow Picnic
P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...
- 洛谷 P2853 [USACO06DEC]牛的野餐Cow Picnic
P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...
- POJ 3256 Cow Picnic
Cow Picnic Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4928 Accepted: 2019 Descri ...
- 洛谷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 ...
- 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 ...
随机推荐
- Websocket集群解决方案
最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息. 所谓的全双工表示客户端和服务端都能向对方发送消息.不使用 ...
- Asp.Net Core6.0中MediatR的应用CQRS
1.前言 对于简单的系统而言模型与数据可以进行直接的映射,比如说三层模型就足够支撑项目的需求了.对于这种简单的系统我们过度设计说白了无异于增加成本,因为对于一般的CRUD来说我们不用特别区分查询和增删 ...
- vue 过滤器时间格式化
1.导入了一个moment.js插件,里面封装了格式化时间的方法 ①:插件的链接:https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/mom ...
- 【深入浅出 Yarn 架构与实现】3-2 Yarn Client 编写
上篇文章介绍了编写 Yarn Application 的整体框架流程,本篇文章将详细介绍其中 Client 部分的编写方式. 一.Yarn Client 编写方法 本篇代码已上传 Github: Gi ...
- 【Android逆向】rpc调用某安App的X-App-Token签名函数
阅读此文档的过程中遇到任何问题,请关注公众号[移动端Android和iOS开发技术分享]或加QQ群[309580013] 1.目标 在学习的过程中,会遇到有些算法比较麻烦,没有办法直接还原.那我们就另 ...
- c++题目:数迷
c++题目:数迷 题目 [题目描述] 给出含有N×N个格子的正方形表格,要求每个格子都填上一个个位数(范围1-N),使得每行.每列以及同一斜线上的数字都不同.部分格子已经填好数字.求满足题意的方案数. ...
- 动态规划篇——线性DP
动态规划篇--线性DP 本次我们介绍动态规划篇的线性DP,我们会从下面几个角度来介绍: 数字三角形 最长上升子序列I 最长上升子序列II 最长公共子序列 最短编辑距离 数字三角形 我们首先介绍一下题目 ...
- 更改HTML请求方式的几种方法
以ctfhub中的请求方式题目为例,则可以有: 法一:通过burpsuite抓包修改 在burpsuite中抓包后发送到repeater模块中,对请求方式进行修改即可 法二:通过curl命令进行 cu ...
- vulnhub靶场之HACK ME PLEASE
准备: 攻击机:虚拟机kali.本机win10. 靶机:HACK ME PLEASE,下载地址:https://download.vulnhub.com/hackmeplease/Hack_Me_Pl ...
- 【大数据面试】Hbase:数据、模型结构、操作、读写数据流程、集成、优化
一.概述 1.概念 分布式.可扩展.海量数据存储的NoSQL数据库 2.模型结构 (1)逻辑结构 store相当于某张表中的某个列族 (2)存储结构 (3)模型介绍 Name Space:相当于数据库 ...