栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1122 FDNY to the Rescue!

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1122 FDNY to the Rescue!

#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>using namespace std;#define MAXV 20#define INF INT_MAXint map[MAXV][MAXV],d[MAXV],parent[MAXV];int n,fire,stasum,station[MAXV];void dijkstra(){int i,j,v,tmp;bool vis[MAXV];memset(parent,-1,sizeof(parent));memset(vis,false,sizeof(vis));for(i=1;i<=n;i++) d[i]=INF;d[fire]=0;for(i=1;i<=n;i++){tmp=INF;for(j=1;j<=n;j++)if(d[j]<tmp && !vis[j]){tmp=d[j];v=j;}vis[v]=true;for(j=1;j<=n;j++){if(!vis[j] && map[v][j]!=-1 && d[j]>d[v]+map[v][j]){//-1不能走d[j]=d[v]+map[v][j];parent[j]=v;//记录路径}}}}void output(){int j,i,tmp,v;printf("OrgDestTimePathn");j=0;while(j!=stasum){tmp=INF;for(i=1;i<=n;i++){//每次找最小的时间输出if(station[i] && d[i]<tmp){tmp=d[i];v=i;}}station[v]=0;//将这个站点设为非消防站printf("%d%d%d",v,fire,d[v]);while(v!=-1){printf("%d",v);v=parent[v];}printf("n");j++;}}int main(){int i,j,x;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&map[j][i]);//边反向存储}}scanf("%d",&fire);stasum=0;memset(station,0,sizeof(station));while(~scanf("%d",&x)) {station[x]=1;//标记消防站stasum++;//计算消防站总数}dijkstra();output();return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号