813C The Tag Game --- DFS

博主计划下回将DFS、BFS和Dijkstra都写一遍,还分享了DFS学习文章链接,同时提到对‘遇到两人到某点距离一样就更新答案’这句话未理解,且不加这句代码也通过了测试。

 追逐游戏啊,? //沧桑脸

下回把dfs,bfs,dijkstra都写一遍~

//DFS和BFS区别

(1)dfs学了这篇:https://blog.youkuaiyun.com/mengxiang000000/article/details/72901402

但是。。。我没有理解遇到两人到某点距离一样,就更新答案这句,而且,不加这句也ac了,搞不明白<(_ _)>

 1 #include<bits/stdc++.h>
 2 #define mem(a) memset(a,0,sizeof(a))
 3 #define ll long long
 4 #define inf 0x3f3f3f3f
 5 const int N=2e5+5;
 6 const int M=1e3+10;
 7 const ll lim=1e14+5;
 8 using namespace std;
 9 int ans,dis[2][N];
10 vector<int>ve[N];
11 void dfs(int now,int from,int judge,int sum)
12 {
13    dis[judge][now]=sum;
14    if(judge==1&&sum<dis[0][now])
15    {
16        ans=max(ans,dis[0][now]*2);//
17    }
18    for(int i=0;i<ve[now].size();i++)
19    {
20         int now1=ve[now][i];
21         if(now1==from) continue;
22         dfs(now1,now,judge,sum+1);
23    }
24 }
25 int main()
26 {
27     int n,x,a,b;
28     scanf("%d%d",&n,&x);
29     for(int i=0;i<n-1;i++)
30     {
31         scanf("%d%d",&a,&b);
32         ve[a].push_back(b);
33         ve[b].push_back(a);
34     }
35     dfs(1,0,0,0);
36     dfs(x,0,1,0);
37     printf("%d\n",ans);
38     return 0;
39 }
View Code

 

转载于:https://www.cnblogs.com/XXrll/p/11169609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值