CCPC 2017 哈尔滨 D. X-Men && HDU 6233
Posted scaulok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCPC 2017 哈尔滨 D. X-Men && HDU 6233相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6233
题意:一个树上有m个人,每个人在某个节点上,每个时刻每个人可以和一个与他距离大于 1 的点进行交流,然后往交流的人的方向走一步,当他一个人没有可以交流的人时就不可以走了,问所有人都不走的期望时间是多少。
题解:假设 t 时刻两个距离最远的人的距离为 x,则在 t + 1 时刻这两个人距离为 x - 2,因为这两个人在这一时刻走的方向是一定的,而在 t 时刻距离为 x - 1 的两个人,因为题目限制的不能和距离小于等于 1 的人交流,故他们的距离一定也会缩小,其他距离同理,可以得出在 t + 1 时刻两个人的最长距离变为 x - 2,故答案则为两个人最长距离的一半。
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <cstring> 6 #include <string> 7 #include <cmath> 8 #include <stack> 9 #include <queue> 10 #include <vector> 11 #include <map> 12 #include <set> 13 #include <bitset> 14 using namespace std; 15 #define ll long long 16 #define ull unsigned long long 17 #define mst(a,b) memset((a),(b),sizeof(a)) 18 #define pii pair<int,int> 19 #define pII pair<ll,ll> 20 #define pi acos(-1) 21 #define pb push_back 22 const double eps = 1e-6; 23 const int inf = 0x3f3f3f3f; 24 const ll INF = 0x3f3f3f3f3f3f3f3f; 25 const int MAXN = 1e3 + 10; 26 const int MAXM = 1e6 + 10; 27 28 vector<int>vec[MAXN]; 29 int a[MAXN],root,mx; 30 31 void dfs(int u,int pre,int dist) { 32 if(a[u] && dist > mx) mx = dist, root = u; 33 for(int i = 0; i < vec[u].size(); i++) { 34 int v = vec[u][i]; 35 if(v == pre) continue; 36 dfs(v,u,dist+1); 37 } 38 } 39 40 int main() { 41 #ifdef local 42 freopen("data.txt", "r", stdin); 43 #endif 44 int t; 45 scanf("%d",&t); 46 while(t--) { 47 int n,m; 48 scanf("%d%d",&n,&m); 49 for(int i = 1; i <= n; i++) { 50 vec[i].clear(); 51 a[i] = 0; 52 } 53 int now = -1; 54 while(m--) { 55 int x; 56 scanf("%d",&x); 57 a[x]++; 58 now = x; 59 } 60 for(int i = 1; i < n; i++) { 61 int u,v; 62 scanf("%d%d",&u,&v); 63 vec[u].pb(v); 64 vec[v].pb(u); 65 } 66 root = -1, mx = 0; 67 dfs(now,-1,0); 68 if(root == -1) { 69 puts("0.00"); 70 continue; 71 } 72 mx = 0; 73 dfs(root,-1,0); 74 mx /= 2; 75 printf("%.2f ",(double)mx); 76 } 77 return 0; 78 }
以上是关于CCPC 2017 哈尔滨 D. X-Men && HDU 6233的主要内容,如果未能解决你的问题,请参考以下文章