题目链接

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. inline ll read(){
  5. int x=,f=;char ch=getchar();
  6. while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
  7. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  8. return x*f;
  9. }
  10.  
  11. /***********************************************************/
  12.  
  13. const int maxn = ;
  14. int n, m;
  15. int dis[maxn], head[maxn], look[maxn];
  16. queue<int>q;
  17. int ans, cas;
  18.  
  19. struct Edge
  20. {
  21. int u, v, w, next, vis;
  22. }edge[maxn*];
  23.  
  24. void add_edge(int u, int v, int w){
  25. edge[cas].u = u; edge[cas].v = v; edge[cas].w = w;
  26. edge[cas].next = head[u]; edge[cas].vis = ;
  27. head[u] = cas++;
  28. }
  29.  
  30. void dfs(int rt, int cl, int num){
  31. if(rt == n) {
  32. ans = num;
  33. return;
  34. }
  35. if(!look[rt]){
  36. look[rt] = ;
  37. dis[rt] = num;
  38. q.push(rt);
  39. }
  40. for(int i = head[rt];i != -;i = edge[i].next){
  41. if(edge[i].vis) continue;
  42. if(edge[i].w == cl){
  43. edge[i].vis = ;
  44. dfs(edge[i].v, cl, num);
  45. }
  46. }
  47. return;
  48. }
  49.  
  50. int bfs(){
  51. while(!q.empty()) q.pop();
  52. q.push(); //从一开始走
  53. dis[] = ;
  54. look[] = ;
  55. while(!q.empty()){
  56. int now = q.front(); q.pop();
  57. for(int i = head[now];i != -;i = edge[i].next){
  58. if(edge[i].vis) continue; //每条边只走一次
  59. int v = edge[i].v;
  60. edge[i].vis = ;
  61. dfs(v, edge[i].w, dis[now]+); //把所有与当前路径相同权值的路径加入
  62. if(ans > ) break;
  63. }
  64. if(ans > ) break;
  65. }
  66. return ans;
  67. }
  68.  
  69. void init(){
  70. cas = ;
  71. memset(head, -, sizeof(head));
  72. memset(look, , sizeof(look));
  73. memset(dis, 0x7f, sizeof(dis));
  74. }
  75.  
  76. int main(){
  77. while(~scanf("%d%d", &n, &m)){
  78. init();
  79. for(int i = ;i <= m;i++){
  80. int u, v, w;
  81. u = read(); v = read(); w = read();
  82. add_edge(u, v, w);
  83. add_edge(v, u, w);
  84. }
  85. ans = -;
  86. ans = bfs();
  87. printf("%d\n", ans);
  88. }
  89. return ;
  90. }

Age of Moyu (2018 Multi-University Training Contest 7)的更多相关文章

  1. ( 2018 Multi-University Training Contest 2)

    2018 Multi-University Training Contest 2) HDU 6311 Cover HDU 6312 Game HDU 6313 Hack It HDU 6314 Mat ...

  2. HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. HDU 5726 GCD (2016 Multi-University Training Contest 1)

      Time Limit: 5000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Description Give y ...

  4. HDU 4897 Little Devil I(树链剖分)(2014 Multi-University Training Contest 4)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4897 Problem Description There is an old country and ...

  5. HDU 4906 Our happy ending(2014 Multi-University Training Contest 4)

    题意:构造出n个数 这n个数取值范围0-L,这n个数中存在取一些数之和等于k,则这样称为一种方法.给定n,k,L,求方案数. 思路:装压 每位 第1为表示这种方案能不能构成1(1表示能0表示不能)   ...

  6. (2018 Multi-University Training Contest 3)Problem D. Euler Function

    //题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6322 //题目大意:给定 k,求第 k 小的数 n,满足 φ(n) 是合数.显然 φ(1) = 1 ...

  7. hdu6315( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6315 /*hdu 1007 首先我们在建立线段树之前应该思考的是线段树的节点维护一个什么 ...

  8. hdu6314( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6314 ----. 又是一个数学题! 这个题使用容斥原理解决的,现场看dls推公式. 我也 ...

  9. hdu6313( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6313 参考dls的讲解: 以5*5的矩阵为例: 后一列分别对前一列+0+1+2+3+4操 ...

随机推荐

  1. the referenced script on this behaviour is missing!

    1.看看你脚本上挂的某个组件是不是发生了变动,比如被删除了什么的 2.最有可能的是你创建完脚本后,中途改过脚本的名字,致使脚本名字和内部的名字不统一.

  2. Nginx开启关闭脚本,php-cgi脚本

    php-cgi nginx与php进行cgi程序 php-cgi -b 127.0.0.1:9001 -c F:\ck\php5.4\php.ini 开启nginx cd F:\ck\nginx1.8 ...

  3. uoj problem 21 缩进优化

    题目: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现,很多时候自己的程序明明看起来比别 ...

  4. [SDOI 2017] 序列计数

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4818 [算法] 考虑容斥 , 用有至少有一个质数的合法序列数 - 没有质数的合法序列 ...

  5. 关系运算符 逻辑运算符 if 语句 switch语句

    1. BOOL类型 BOOL isRightOrNo = YES; isRightOrNo = 56;//可以打印出来,在C语言中,非0即真 printf("%d\n" , isR ...

  6. linux获取文件大小的函数

    C语言fstat()函数:由文件描述词取得文件状态 头文件:#include <sys/stat.h>   #include <unistd.h> 定义函数:int fstat ...

  7. project online get approvals task data 获取审批待办任务接口

    调用接口地址:重要 http://xxxx/sites/pwa/_vti_bin/PSI/ProjectServer.svc Header 三个必要参数: 其中SOAPAction写死就行,如果是on ...

  8. LAMP 1.7Apache用户认证

    假如我们要在www.aaa.com/的 abc/目录下放一些文件,只想让自己访问,做一个用户认证.输入正确的用户和密码才能访问 cd /data/www mkdir abc cd abc cp /et ...

  9. tar压缩解压缩

    Linux下的tar压缩解压缩命令详解tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以 ...

  10. Activity--弹出底部窗口

    第一步 : 退出时候的布局文件exit_dialog_from_settings.xml <?xml version="1.0" encoding="UTF-8&q ...