7_4_N题 Til the Cows Come Home 题解[poj 2387] (最短路)
2016-07-06 20:34
477 查看
题目链接
题意
求从1到n的最短路思路
模板题,直接Dijkstra跑起。代码
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <set> #define INF 0x3f3f3f3f3f3f3f3f using namespace std; const long long maxn = 1e5+10; const long long mod = 1e9+13; struct edge{ long long v,to,cost; edge(long long t,long long c):to(t),cost(c){}; edge(long long v, long long t,long long c):v(v),to(t),cost(c){}; bool operator < (const edge & a) const{ return cost > a.cost; } }; vector <edge> G_a[maxn]; vector <edge> e; void addedge(long long from, long long to, long long cost){ G_a[from].push_back(edge(to, cost)); G_a[to].push_back(edge(from, cost)); } long long dis_a[maxn]; long long n; void Dijkstra(long long s, long long dis[]){ for (long long i = 0 ; i <= n ; i ++){ dis[i] = INF; } dis[s] = 0; priority_queue<edg 4000 e> Q; Q.push(edge(s,dis[s])); while(!Q.empty()){ edge tmp = Q.top();Q.pop(); long long limt = G_a[tmp.to].size(); for(long long i = 0 ; i < limt; i ++){ edge& next = G_a[tmp.to][i]; if(dis[next.to] > tmp.cost + next.cost){ dis[next.to] = tmp.cost + next.cost; Q.push(edge(next.to,dis[next.to])); } } } } int main(){ long long s,t; scanf("%I64d %I64d",&t,&n); long long from, to, cos; for (long long i = 0 ; i < t ; i ++){ scanf("%I64d %I64d %I64d",&from,&to,&cos); addedge(from,to,cos); e.push_back(edge(from,to,cos)); } Dijkstra(n,dis_a); printf("%d\n",dis_a[1]); }
相关文章推荐
- POJ 2182 Lost Cows
- POJ-2253 Frogger(Dijkstra)(Floyd)
- Java中对List集合的常用操作
- 建造者模式
- Linux开发工具(gcc gdb make shell)——GCC 三级优化
- lucene 目录结构简单介绍
- Android中Fragment的生命周期各状态和回调函数使用
- d393 【那些年遇到过的面试题】malloc 原理
- 常用的几种算法总结
- C#读取系统文件信息(二)——调API读取系统文件及系统盘Icon图标
- [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniq
- 偏向锁,轻量级锁,重量级锁
- 数据库索引的作用和优点缺点
- 王小川清华大学毕业典礼演讲:我也有过学渣经历(和时间做朋友,要和华军、天空这些下载站做合作推广)
- window平台安装MongoDB
- Guacamole环境搭建指南
- linux top 命令分析
- Rxjava 简介
- 欢迎使用CSDN-markdown编辑器
- Android进程间通信之--AIDL