博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1125
阅读量:5984 次
发布时间:2019-06-20

本文共 1170 字,大约阅读时间需要 3 分钟。

最短路径问题,我用的是临接表来存储各个边的信息,用优先队列的dijkstra算法
#include 
#include
#include
using namespace std;const int maxn=101;const int INF=2<<20;struct edge { int po,w; edge * next;};struct node{ edge * first;}head[maxn];typedef pair
pii;priority_queue
,greater
>q;int n,per,minx;void dijkstra(){ int low[maxn],i,j,visit[maxn]; minx=INF; for(i=1;i<=n;i++) { int max=-1; int tot=0; for(j=1;j<=n;j++) { low[j]=j==i?0:INF; visit[j]=0; } q.push(make_pair(low[i],i)); while(!q.empty()) { pii u=q.top(); q.pop(); int x=u.second; if(visit[x]) continue; visit[x]=1; tot++; if(low[x]>max) max=low[x]; edge * tem=head[x].first; while(tem!=NULL) { if(low[tem->po]>(low[x]+tem->w)) { low[tem->po]=low[x]+tem->w; q.push(make_pair(low[tem->po],tem->po)); } tem=tem->next; } } if(tot==n) { if(max
>n&&n!=0) { int i,t,e,w; for(i=1;i<=n;i++) head[i].first=NULL; edge * tem; for(i=1;i<=n;i++) { cin>>t; while(t--) { cin>>e>>w; tem=new edge; tem->po=e; tem->w=w; tem->next=head[i].first; head[i].first=tem; } } dijkstra(); cout<
<<" "<
<

转载于:https://www.cnblogs.com/lj-vs-lishimin/archive/2012/10/29/2774369.html

你可能感兴趣的文章
java - Math、system、BigDecimal、Date、SimpleDateFormat、Calendar类概述和方法使用
查看>>
C# XML读写示例
查看>>
[leetcode-107-Binary Tree Level Order Traversal II]
查看>>
iptables
查看>>
MySQL数据库分表分区(一)(转)
查看>>
DEV CheckComboboxEdit、CheckedListBoxControl(转)
查看>>
第8题——计算糖果
查看>>
Hadoop 单节点(或集群)基本配置信息
查看>>
poj 1106 Transmitters
查看>>
appium环境安装说明
查看>>
正则表达式
查看>>
MySQL跳过密码登录
查看>>
PLI 到 COBOL 的转换-数据类型 【不搞Mainframe的可能看不懂,冷门的语言】
查看>>
Tomcat学习总结(4)——基于Tomcat7、Java、WebSocket的服务器推送聊天室
查看>>
js_正则
查看>>
db.properties配置连接,出现异常的最大连接数限制
查看>>
flask扩展模块flask-sqlachemy 的使用---mysql数据库
查看>>
在2011年QCon北京大会上的主题分享内容——Keynote
查看>>
Ubuntu 中使用git 上传代码
查看>>
一些有用的技术文章
查看>>