题目链接

2了,差点就A了。。。这题真心不难,开始想的就是暴力spfa就可以,直接来了一次询问,就来一次的那种,TLE了,想了想,存到栈里会更快,交又TLE了。。无奈C又被cha了,我忙着看C去了。。。这题,是我一个地方写错了。。top = 0的时候会死循环吗?貌似不会把,反正我加了这个判断,就A了,可能优化了一下把。

  1. #include <cstring>
  2. #include <cstdio>
  3. #include <string>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <cmath>
  7. #include <queue>
  8. using namespace std;
  9. #define INF 1000000
  10. int first[];
  11. int dis[];
  12. int in[];
  13. int s[];
  14. int n,t,top;
  15. struct node
  16. {
  17. int u,v,next;
  18. }edge[];
  19. void CL()
  20. {
  21. t = ;
  22. memset(first,-,sizeof(first));
  23. }
  24. void add(int u,int v)
  25. {
  26. edge[t].u = u;
  27. edge[t].v = v;
  28. edge[t].next = first[u];
  29. first[u] = t ++;
  30. }
  31. void spfa()
  32. {
  33. int i,u,v;
  34. for(i = ;i <= n;i ++)
  35. in[i] = ;
  36. queue<int>que;
  37. for(i = ;i < top;i ++)
  38. {
  39. in[s[i]] = ;
  40. dis[s[i]] = ;
  41. que.push(s[i]);
  42. }
  43. while(!que.empty())
  44. {
  45. u = que.front();
  46. que.pop();
  47. in[u] = ;
  48. for(i = first[u];i != -;i = edge[i].next)
  49. {
  50. v = edge[i].v;
  51. if(dis[v] > dis[u] + )
  52. {
  53. dis[v] = dis[u] + ;
  54. if(!in[v])
  55. {
  56. in[v] = ;
  57. que.push(v);
  58. }
  59. }
  60. }
  61. }
  62. return ;
  63. }
  64. int main()
  65. {
  66. int m,i,u,v;
  67. CL();
  68. scanf("%d%d",&n,&m);
  69. for(i = ;i < n;i ++)
  70. {
  71. scanf("%d%d",&u,&v);
  72. add(u,v);
  73. add(v,u);
  74. }
  75. for(i = ;i <= n;i ++)
  76. dis[i] = INF;
  77. top = ;
  78. s[] = ;
  79. spfa();
  80. top = ;
  81. for(i = ;i <= m;i ++)
  82. {
  83. scanf("%d%d",&u,&v);
  84. if(u == )
  85. {
  86. s[top ++] = v;
  87. }
  88. else
  89. {
  90. if(top != )//这里
  91. spfa();
  92. top = ;
  93. printf("%d\n",dis[v]);
  94. }
  95. }
  96. return ;
  97. }

Codeforces Round #199 (Div. 2) E. Xenia and Tree的更多相关文章

  1. Codeforces Round #199 (Div. 2) B. Xenia and Spies

    B. Xenia and Spies time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  2. Codeforces Round #199 (Div. 2) A Xenia and Divisors

    注意题目的数字最大是7 而能整除的只有 1,2,3,4,6,故构成的组合只能是1,2,4 或1,2,6或1,3,6,故分别统计1,2,3,4,6的个数,然后再分配 #include <iostr ...

  3. Codeforces Round #199 (Div. 2) D. Xenia and Dominoes

    把 'O' 看成 'X',然后枚举它的四个方向看看是否能放,然后枚举 $2^4$ 种可能表示每种方向是否放了,放了的话就标成 'X',就相当于容斥,对于新的图去dp. dp就是铺地砖,行用二进制来表示 ...

  4. 线段树 Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations

    题目传送门 /* 线段树的单点更新:有一个交叉更新,若rank=1,or:rank=0,xor 详细解释:http://www.xuebuyuan.com/1154895.html */ #inclu ...

  5. Codeforces Round #199 (Div. 2)

    A.Xenia and Divisors 题意:给定N个数,每个数的取值范围为1-7,N是3的倍数,判定是否能够恰好将N个数分成若干三元组,使得一个组中的元素a,b,c满足 a < b < ...

  6. Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造

    B. Invariance of Tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/576/ ...

  7. Codeforces Round #199 (Div. 2) C. Cupboard and Balloons

    C. Cupboard and Balloons time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  8. Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations

    D. Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input ...

  9. Codeforces Round #207 (Div. 1) B. Xenia and Hamming(gcd的运用)

    题目链接: B. Xenia and Hamming 题意: 要求找到复制后的两个字符串中不同样的字符 思路: 子问题: 在两串长度是最大公倍数的情况下, 求出一个串在还有一个串中反复字符的个数 CO ...

随机推荐

  1. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

  2. HP SAN Switch光纖交換機命令行畫zone

    有時候我們無法登陸網頁交互界面去操縱交換機,如下提供了命令行方式從交換機劃zone 1.創建別名 alicreate "SummaryDB_N", "211,14; 21 ...

  3. ZLL网关程序分析

    主机接口 zllSocCmd.h(ZLL的Socket主机接口) 此模块包含ZLL的Socket主机接口API.其包含的函数方法在zllSocCmd.c中实现 ZLL Soc Types 定义了描述设 ...

  4. Mesa 3D

    Mesa 3D是一个在MIT许可证下开放源代码的三维计算机图形库,以开源形式实现了OpenGL的应用程序接口. OpenGL的高效实现一般依赖于显示设备厂商提供的硬件,而Mesa 3D是一个纯基于软件 ...

  5. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)

    本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面.推荐第二种方式,方便快捷,随时修改随时生成 0:前提和条件: 1:u ...

  6. VS2013安装oepncv2.4.10 以及opencv 3.0.0

    Author:Maddock Date:2014.12.27 …………………………………………………………………………………………………… PS: VS2013 + OPENCV 3.0.0 的安装, ...

  7. UI中 frame 与 transform的用法与总结

    在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CG ...

  8. Servlet的request应用案例

    request部分用法如代码: AServlet package cn.yzu; import java.io.IOException; import javax.servlet.ServletExc ...

  9. background为圆角的表框,dp转Px,Px转dp

    圆角边框<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="ht ...

  10. Android 编程下 DP、SP 以及屏幕像素密度

    有时需为视图属性指定大小尺寸值(通常以像素为单位,但有时也用点.毫米或英寸).最常见的属性有: 文字大小(Text Size),指设备上显示的文字像素高度: 边距(Margin),指定视图组件间的距离 ...