The Tag Game CodeForces
来源:互联网 发布:白垩纪往事 知乎 编辑:程序博客网 时间:2024/06/02 01:03
首先 想要尽可能拖延游戏时间 Bob必须躲在一个离Alice尽可能远的叶节点(度为1)
而怎样知道两人分别到每个叶节点的距离呢?
分别以两人位置为根 递归遍历整张树图 节点在第几层递归遇到 它就在第几层 离根节点的距离就是多少
再以与Alice距离为依据 将所有叶节点排序 距离长者优先考虑
但可能在Bob前往该地时会被Alice截击 也就是说Alice离该点更近
这条路行不通 考虑离Alice第二远的叶节点 总能找到答案
#include <stdio.h>#include <queue>#include <vector>using namespace std;struct node{ friend bool operator< (node n1,node n2) { return n1.val<n2.val; } int id; int val;};priority_queue <struct node> que;vector <int> edge[400001];int degree[200001],tem[200001],book[200001];int dis1[200001],last1[200001];int dis2[200001],last2[200001];int n,m,s,num;void safari1(int cur,int step);void safari2(int cur,int step);int main(){ struct node t; int i,a,b,ans; while(scanf("%d%d",&n,&s)!=EOF) { m=n-1; for(i=1;i<=n;i++) { edge[i].clear(); degree[i]=0; } while(!que.empty()) { que.pop(); } for(i=1;i<=m;i++) { scanf("%d%d",&a,&b); edge[a].push_back(b); edge[b].push_back(a); degree[a]++,degree[b]++; } num=0; for(i=1;i<=n;i++) { book[i]=0; } dis1[1]=0,last1[1]=-1,book[1]=1; safari1(1,1); for(i=1;i<=n;i++) { book[i]=0; } dis2[s]=0,last2[s]=-1,book[s]=1; safari2(s,1); for(i=1;i<=num;i++) { if(dis1[tem[i]]>dis1[s]) { t.id=tem[i]; t.val=dis1[tem[i]]; que.push(t); } } ans=dis1[s]; while(!que.empty()) { t=que.top(); que.pop(); if(dis2[t.id]<dis1[t.id]) { ans=dis1[t.id]; break; } } printf("%d\n",ans*2); } return 0;}void safari1(int cur,int step){ struct node t; int i; if(degree[cur]==1)//// { num++; tem[num]=cur; if(cur!=1) return; } for(i=0;i<edge[cur].size();i++) { if(book[edge[cur][i]]==0) { dis1[edge[cur][i]]=step,last1[edge[cur][i]]=cur,book[edge[cur][i]]=1; safari1(edge[cur][i],step+1); } } return;}void safari2(int cur,int step){ int i; if(cur!=s&°ree[cur]==1)//// { return; } for(i=0;i<edge[cur].size();i++) { if(book[edge[cur][i]]==0) { dis2[edge[cur][i]]=step,last2[edge[cur][i]]=cur,book[edge[cur][i]]=1; safari2(edge[cur][i],step+1); } } return;}
阅读全文
0 0
- The Tag Game CodeForces
- The Tag Game(CodeForces
- codeforces 813C The Tag Game
- codeforces 813C. The Tag Game
- Codeforces 813 C The Tag Game
- Codeforces 813C The Tag Game 题解
- codeforces 813C The Tag Game dfs
- codeforces 813C The Tag Game
- codeforces 813C The Tag Game
- Codeforces 813C The Tag Game
- Educational Codeforces Round 22 C. The Tag Game dfs
- Codeforces 813C The Tag Game【思维+Dfs】
- Educational Codeforces Round 22-C. The Tag Game-搜索,贪心
- Educational Codeforces Round 22 C. The Tag Game(思维)
- Educational Codeforces Round 22 C. The Tag Game 搜索
- Codeforces Round 22 C. The Tag Game ( 搜索
- codeforces 813C The Tag Game dfs && 路径长度
- The Tag Game
- 数据库导出EXCEL后0丢失
- 贪婪模式与非贪婪模式讲解
- Vegas Pro 8.0汉化免费版 含汉化包
- |2446|最终排名
- js中的错误与调试
- The Tag Game CodeForces
- Python中数据的写入与读取
- 解决Linux上WPS字体缺失问题
- Eclipse Svn 安装
- 邮件系统
- spring注解事物,不生效,不回滚,正确配置
- 微信小程序的百度地图获取地理位置 —— 微信小程序教程系列(15)
- 叉积(向量之间的计算)
- Scala中的for/yield详解