POJ1122
来源:互联网 发布:在人间 知乎 编辑:程序博客网 时间:2024/06/06 09:17
Problem : FDNY to the Rescue!
Description : 有一个矩阵,里面有一个地方着火了,现在有几个消防点,要你求出他们到这个着火点最短时间,并且输出路径。
Solution : 迪杰斯特拉+输出路径,很裸,注意细节就好,当着火点和消防电一样时,路径只需输出着火点。这个地方WA了一次。
Code(C++) :
#include <stdio.h>#include <string.h>#include <stdlib.h>const int M=30;const int INF=0x3f3f3f3f;typedef struct tagNode{ int H; int t; tagNode(){} tagNode(int H,int t):H(H),t(t){}}Node;int n;int map[M][M];int src;int des[M];int num;int pre[M];int dis[M];bool used[M];int cmp(const void *a,const void *b){ Node *A=(Node *)a; Node *B=(Node *)b; return A->t-B->t;}void dij(int src){ int i; for(i=1;i<=n;i++) dis[i]=map[src][i], used[i]=false, pre[i]=-1; used[src]=true; for(i=1;i<n;i++) { int temp=INF; int k=src; int j; for(j=1;j<=n;j++) if(temp>dis[j]&&!used[j]) temp=dis[j],k=j; used[k]=true; for(j=1;j<=n;j++) if(dis[j]>dis[k]+map[k][j]&&!used[j]) dis[j]=dis[k]+map[k][j], pre[j]=k; }}void print(int x){ if(x==-1) return ; printf("\t%d",x); print(pre[x]);}int main(){ //freopen("in.data","r",stdin); while(~scanf("%d",&n)){ int i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++){ scanf("%d",&map[j][i]); map[j][i]=(map[j][i]<0? INF:map[j][i]); } scanf("%d",&src); char c; num=0; while(scanf("%d%c",&des[num++],&c),c!='\n'); dij(src); Node ans[M]; for(i=0;i<num;i++) ans[i]=Node(des[i],dis[des[i]]); qsort(ans,num,sizeof(ans[0]),cmp); printf("Org Dest Time Path\n"); for(i=0;i<num;i++){ printf("%d\t%d\t%d",ans[i].H,src,ans[i].t); int tmp=ans[i].H; if(ans[i].H==src){ printf("\t%d\n",src); continue; } print(tmp); printf("\t%d\n",src); } } return 0;}
0 0
- POJ1122
- POJ1122
- POJ1122 DIJKSTRA
- Poj1122解题报告(水~~~~)
- poj1122 - FDNY to the Rescue!
- zoj1053/poj1122-FDNY to the Rescue!
- poj1122&zoj1053 FDNY to the Rescue!(dijkstra+输出路径)
- 怎样防止头文件被重复包含?(两种方式)以及它的影响
- 为个么,每一个明年,都是OLED大发展的年份
- LeakCanary 中文使用说明
- eclipse中输入中文为繁体
- Debug之路-5
- POJ1122
- ios 解决textfield无法自动弹出键盘问题
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- request、response 中文乱码问题与解决方式
- js中top.location.href、parent.location.href用法
- HDOJ 2068 RPG的错排
- 顺序表应用1:多余元素删除之移位算法
- STL源码阅读(七)
- 轻松学习之最简化原生效果集成UITableViewCell左滑多个按钮