BFS即可,不知道怎么回事,我竟然写了个SPFA——虽然也是正确的。

还需要注意细节,数组开始又小了。。。

/** usaco 2008 oct pwalk.c* mike-w* 2012-10-28*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define MAXN 1111
#define QSIZE MAXN
#define xLOL_DEBUG
#define xLOL_GRAPHint dst[MAXN][MAXN];
int f[2*MAXN][3], head[MAXN], h_size;
int N, Q;int que[QSIZE], qhead, qtail, qlen;
int inq[MAXN];int enque(int e)
{if(qlen==QSIZE)puts("queue is full!");que[qtail++]=e;if(qtail==QSIZE)qtail=0;qlen++;return 0;
}int deque(void)
{if(qlen==0)puts("queue is empty!");int ret=que[qhead++];if(qhead==QSIZE)qhead=0;qlen--;return ret;
}int comp(const void *e1, const void *e2)
{return *((int*)e1) - *((int*)e2);
}/* note: only N-1 edges */
int build_graph(void)
{int i;h_size=2*N-2;qsort(f, h_size, sizeof(int[3]), comp);for(i=1; i<=N; i++)head[i]=-1;for(i=0; i<h_size; i++)if(head[f[i][0]]<0)head[f[i][0]]=i;return 0;
}int spfa(int init, int *s)
{int x, tar, i;qhead=qtail=qlen=0;memset(inq, 0, sizeof(inq));for(i=1; i<=N; i++)if(i!=init)s[i]=-1;enque(init);inq[init]=1;while(qlen>0){x=deque();inq[x]=0;for(i=head[x]; i>=0 && i<h_size && f[i][0]==x; i++){tar=f[i][1];if(s[tar]==-1 || s[x]+f[i][2]<s[tar]){s[tar]=s[x]+f[i][2];if(!inq[tar])enque(tar), inq[tar]=1;}}}return 0;
}int main(void)
{int i, j, t1, t2;scanf("%d%d", &N, &Q);for(i=0; i<N-1; i++){scanf("%d%d%d", f[i], f[i]+1, f[i]+2);f[N-1+i][0]=f[i][1];f[N-1+i][1]=f[i][0];f[N-1+i][2]=f[i][2];}build_graph();#ifdef LOL_GRAPHputs("\nforward star:");for(i=1; i<=N; i++){printf("%-2d+\n", i);for(j=head[i]; j>=0 && j<h_size && f[j][0]==i; j++)printf("  |- %d [%2d]\n", f[j][1], f[j][2]);}puts("............................");
#endiffor(i=1; i<=N; i++)spfa(i, dst[i]);
#ifdef LOL_DEBUGputs("shortest path:");for(i=1; i<=N; i++)for(j=1; j<=N; j++)printf("%d%c", dst[i][j], j==N?'\n':' ');puts(".............................");
#endiffor(i=1; i<=Q; i++){scanf("%d%d", &t1, &t2);printf("%d\n", dst[t1][t2]);}return 0;
}

usaco 2008 oct pwalk相关推荐

  1. usaco 2008 oct water

    这是一道MST,不过我最开始没看出来==!考虑最优解只能是一个森林,森林中的每棵树只有一个井,于是我们可以创建一个虚拟节点,将它和井连接起来,权值赋予挖井的费用,这样解就是MST /** usaco ...

  2. USACO 2008 OCT gold 牧草

    题目描述 有N (2 <= N <= 1,000)头奶牛,分别编号为1到N.还有N颗牧草分别编号为1到N.简单起见,第i头奶牛都盯着第i颗牧草.有几对牧草分别用一些小路连接了起来,总共有N ...

  3. 微软天下行,豪侠汤山会 2008 Oct MVP OpenDay 博客园全家福!(更新完毕)

    亲爱的MVP们,你们好,根据不完全统计,集体照片已经发送到您的邮箱/指定邮箱中了,未收到的MVP朋友们可能是因为我没有大家的联系方式,其余照片随后送到,建议MSN联系我,照片基本上全部整理好了-- 终 ...

  4. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...

  5. BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏

    直接模拟2333 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,ans; 5 ...

  6. BZOJ 1232 USACO 2008 Nov. 安慰奶牛Cheer

    [题解] 对于每一条边,我们通过它需要花费的代价是边权的两倍加上这条边两个端点的点权. 我们把每条边的边权设为上述的值,然后跑一边最小生成树,再把答案加上最小的点权就好了. 1 #include< ...

  7. USACO 2008 Jan Gold 3.Cell Phone Network 树形dp

    本题的大意就是在一棵树上选一些节点,被选中的节点可以覆盖他相 邻的点,问最少需要放几个节点\text{本题的大意就是在一棵树上选一些节点,被选中的节点可以覆盖他相 邻的点,问最少需要放几个节}\\\t ...

  8. USACO 刷水记录

    发现一篇一篇写太麻烦了 决定向jiry学习 3 BZOJ 3446 USACO 2014 Feb GoldCow Decathlon 直接状压即可 BZOJ 1679 USACO 2005 Jan S ...

  9. USACO River Crossing

    洛谷 P2904 [USACO08MAR]跨河River Crossing https://www.luogu.org/problem/P2904 JDOJ 2574: USACO 2008 Mar ...

最新文章

  1. 【PAT (Advanced Level) Practice】1008 Elevator (20 分)
  2. ×××站点的路由(隧道、接口)模式和策略模式
  3. Java的组合排列问题
  4. django07: 模板语言(旧笔记)
  5. 暑期项目经验(九) -- request session application
  6. Qt中线程的简单使用
  7. kafka是什么_技术面试官问:Kafka为什么速度那么快?
  8. BootStrap笔记-栅格系统
  9. python thread模块_【Python@Thread】thread模块
  10. 醴陵市事业单位计算机类面试题目,2019年湖南株洲醴陵县事业单位面试题(9月22日)...
  11. 中国天然驱蚊剂行业市场供需与战略研究报告
  12. ListView与Adapter笔记:ZrcListView
  13. 2020_0527_近期思考
  14. Kinect v2基于Ubuntu16.04使用ORK中linemod算法进行目标检测和定位
  15. iTunes只能装C盘吗_就这一篇:教你真正有效地解决爆满的C盘!
  16. NideShop:基于Node.js+MySQL开发的高仿某易严选开源B2C商城(微信小程序客户端)
  17. 压缩文件暴力破解(免费党的快乐)
  18. 关于vs2022设置默认浏览器
  19. 微信群引流全新揭秘——微信群裂变日增2000+精准粉
  20. Linux文件查看和编辑命令

热门文章

  1. 熊孩子篇:卸载WeChat后怎么找回我的聊天记录经验总结
  2. 初始Linux—Linux系统编程第三节——初始进程
  3. python写飞机大战什么水平_飞机大战python
  4. POI中导出Excel单元格样式(居中,字体,边框等)
  5. 服装企业数字化转型是必然的趋势——思维的转变
  6. 疫情期间如何找一份更好的工作?
  7. matlab调用函数出nan,求助:Matlab的fmincon函数出现RCOND = NaN
  8. FANUC机器人如何通过示教器查看软件版本和电机相关配置信息?
  9. 6.5、Android Studio的Android Device Monitor
  10. 车牌识别 opencv linux,Edison + opencv + webcam 实现车牌识别