基础最短路 十 POJ 1511
来源:互联网 发布:yy淘宝互刷平台 编辑:程序博客网 时间:2024/06/08 19:31
POJ 1511: http://poj.org/problem?id=1511
n,m为 1000000
题目大意为: 从点1 到其余各个点,再返回,所有的最短路,一共为多少。
此题就是 队列优化后 的 Dijkstra 或者 Spfa。
使用了一下不熟练的 队列优化的Dijkstra ,一直WA。
找了很久的错误/(ㄒoㄒ)/~~
后来发现, 最短路的极大值 以前屡试不爽的 99999999 八个九不能用。题目数据真是让我害怕。我改成 九个九或者十个九救过了......
队列优化Dijkstra: 里面的注释是我以前自己写的......
#include"cstdio"#include"iostream"#include"cstring"#include"algorithm"#include"vector"#include"cmath"#include"queue"#include"map"using namespace std;#define INF 9999999999#define inf 1000009#define loop(x,y,z) for(x=y;x<z;x++)#define ll long longint n,m,s,g; //s 为起点 g 为终点int book[inf],dis[inf]; //book为标记,一个点作为中转点只能走一次ll ans;int bus[inf][3]; //dis 为起点到此点距离struct Node //存储边{ int to,w; Node(int i,int j) { to=i;w=j; } bool operator< (const Node& i)const { return w>i.w; }};vector<Node>edge[inf]; //edge 来存储每一个邻接边priority_queue<Node>q; //优先队列用来取元素void init(){ int i; memset(book,0,sizeof book); loop(i,1,n+1)edge[i].clear(); while(!q.empty())q.pop(); loop(i,1,n+1) dis[i]=INF; dis[s]=0;}void Dijkstra(){ int i,j,k; q.push(Node(s,0)); //压入起点 while(!q.empty()) { Node t=q.top(); q.pop(); int u=t.to; //if(book[u])continue; //取出距离起点最小点(Dijkstra思想),取过就吐掉 book[u]=1; int len=edge[u].size(); loop(i,0,len) //对中转点每一条邻接边 松弛 { Node& e=edge[u][i]; if(dis[e.to]>dis[u]+e.w) { dis[e.to]=dis[u]+e.w; q.push(Node(e.to,dis[e.to])); //压入此点时,压入的是节点号,以及节点到起点的距离 dis } } }}void print(){ int i; loop(i,1,n+1)printf("%d ",dis[i]); printf("\n");}int main(){ int i,j,k,o,t; int T; scanf("%d",&T); loop(o,1,T+1) { scanf("%d%d",&n,&m); ans=0; s=1;g=n; //起点和终点别忘记修改 init(); loop(t,1,m+1) { scanf("%d%d%d",&i,&j,&k); bus[t][0]=i; bus[t][1]=j; bus[t][2]=k; } loop(t,1,m+1) edge[bus[t][0]].push_back(Node(bus[t][1],bus[t][2])); Dijkstra(); loop(i,1,n+1)ans+=(ll)dis[i]; init(); loop(t,1,m+1) edge[bus[t][1]].push_back(Node(bus[t][0],bus[t][2])); Dijkstra(); loop(i,1,n+1)ans+=(ll)dis[i]; printf("%lld\n",ans); } return 0;}
0 0
- 基础最短路 十 POJ 1511
- poj 1135 基础最短路
- poj 1511 最短路
- 基础最短路练习 一 POJ 2387
- 基础最短路 二 POJ 2253
- 基础最短路三 POJ 1797
- 基础最短路 七 POJ 1502
- 基础最短路 九 POJ 2240
- POJ-1511 Invitation Cards【最短路】
- poj 1511&zoj 2008 最短路
- poj 1511 Invitation Cards(spfa最短路)
- POJ 1511 Invitation Cards (最短路)
- POJ 1511 Invitation Cards 最短路SPFA
- poj 1511 Invitation Cards(最短路)
- poj 1511 Invitation Cards (最短路)
- POJ Big Christmas Tree(基础最短路)
- poj 2253 最短路
- POJ 1135 最短路
- Redis大鹏博客转载____Redis主从复制
- 无线网络学习笔记(1)
- 关于ScrollView的fillViewport属性
- MFC下对位图的旋转
- 基础最短路 九 POJ 2240
- 基础最短路 十 POJ 1511
- 核心初始化---异常向量表、svc模式、关闭看门狗、关闭中断、关闭mmu
- POJ 1661Help Jimmy(基础dp)
- Android 代码写布局
- POJ3253_Fence Repair_贪心
- Python零碎知识点
- C与C++的文件简单操作
- Windows第二次实验——C++复习(二)类和对象
- js对象的创建方式(小记)