SDNUOJ 1139.Emergency
来源:互联网 发布:4行4列矩阵的值怎么求 编辑:程序博客网 时间:2024/06/01 21:21
每次对加入的点更新即可
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<queue>#include<vector>#define INF 1<<29 // 改成1<<30就WA#include<cmath>#define N 305using namespace std;int n;int can[N],dis[N][N];void update(int k){ int i,j; for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(dis[i][k]+dis[k][j]<dis[i][j]){ dis[i][j]=dis[i][k]+dis[k][j]; } } }}int main(){ int m,q,i,j,c,u,v,w,ics=0; while(~scanf("%d%d%d",&n,&m,&q)){ if(!n&&!m&&!q) break; printf("Case %d:\n",++ics); for(i=0;i<n;i++) for(j=0;j<n;j++) if(i!=j) dis[i][j]=INF; else dis[i][j]=0; while(m--){ scanf("%d%d%d",&u,&v,&w); dis[u][v]=min(w,dis[u][v]); } memset(can,0,sizeof(can)); while(q--){ scanf("%d",&c); if(c==0){ scanf("%d",&u); if(can[u]){ printf("City %d is already recaptured.\n",u); continue; } can[u]=1; update(u); } else { scanf("%d%d",&u,&v); if(!can[u]||!can[v]){ printf("City %d or %d is not available.\n",u,v); continue; } if(dis[u][v]==INF){ printf("No such path.\n"); continue; } printf("%d\n",dis[u][v]); } } printf("\n"); } return 0;}
0 0
- SDNUOJ 1139.Emergency
- sdnuoj 1302
- sdnuoj 1330
- For SDNUOJ
- sdnuoj系列
- Emergency
- emergency
- Emergency
- Emergency
- Emergency
- SDNUOJ 1038收藏宝藏
- [c]sdnuoj 1031 拓扑排序
- PAT_1003: Emergency
- Emergency numbers
- sdut Emergency
- PAT1003. Emergency
- 1003.Emergency
- pat1003 Emergency
- CentOS 修改IP地址DNS,网关
- 排序算法之插入排序
- rundll32参数
- hdu2159-完全背包
- MySQL数据、索引信息统计
- SDNUOJ 1139.Emergency
- librt.so主要是glibc对real-time部分的支持
- mstsc 使用技巧
- android SQLite数据库操作
- asp.net 当前上下文不存在名称 XXX
- 关于Eclipse中import javax.servlet.*出错
- cannot convert parameter 1 from 'const char [] ' to 'const wchar_t * '的解决方法
- 如何让你开发的游戏赚钱
- Java技术丛书