codeforce 230D Dijsktra
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std; const int maxe = ;
const int maxn = ;
const int INF = 0x3f3f3f3f; struct Edge{
int u,v,w;
int next;
Edge(int u=,int v=,int w=,int next=): u(u), v(v), w(w) ,next(next){}
};
struct Heap{
int u,len;
Heap(int u=,int len=): u(u), len(len) {}
bool operator < (const Heap& rhs) const{
return len > rhs.len;
}
}; vector<int> G[maxn]; struct Dijsktra{
Edge edges[maxe];
int head[maxn],cnt;
int d[maxn];
bool vis[maxn]; void init(){
memset(head,-,sizeof(head));
cnt = ;
} void addedge(int u,int v,int w){
edges[cnt] = Edge(u,v,w,head[u]);
head[u] = cnt++;
edges[cnt] = Edge(v,u,w,head[v]);
head[v] = cnt++;
} int dijsktra(int s,int t){
memset(vis,,sizeof(vis));
memset(d,0x3f,sizeof(d)); d[s] = ;
priority_queue<Heap> Q;
Q.push(Heap(s,d[s])); while(!Q.empty()){
Heap temp = Q.top(); Q.pop();
int u = temp.u; if(vis[u]) continue;
vis[u] = true; int len = temp.len;
int sz = G[u].size();
for(int j=;j<sz;j++){
if(G[u][j] == len) len++;
if(G[u][j] > len) break;
} for(int i=head[u];i!=-;i=edges[i].next){
int v = edges[i].v;
int w = edges[i].w; if(len + w < d[v]){
d[v] = len + w;
Q.push(Heap(v,d[v]));
}
}
}
return d[t];
} }solver; int main()
{
//freopen("E:\\acm\\input.txt","r",stdin); solver.init(); int n,m;
scanf("%d %d",&n,&m); for(int i=;i<=m;i++){
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
solver.addedge(u,v,w);
} for(int i=;i<=n;i++){
int k;
scanf("%d",&k);
for(int j=;j<=k;j++){
int a;
scanf("%d",&a);
G[i].push_back(a);
}
} int ans = solver.dijsktra(,n); if(ans >= INF) ans = -; printf("%d\n",ans); }
codeforce 230D Dijsktra的更多相关文章
- 【图论】深入理解Dijsktra算法
1. Dijsktra算法介绍 Dijsktra算法是大牛Dijsktra于1956年提出,用来解决有向图单源最短路径问题.但不能解决负权的有向图,若要解决负权图则需要用到Bellman-Ford算法 ...
- 【BZOJ-2725】故乡的梦 Dijsktra + Tarjan + Dinic + BFS + 堆
2725: [Violet 6]故乡的梦 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 502 Solved: 173[Submit][Status ...
- Codeforce - Street Lamps
Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is ...
- Codeforce Round #216 Div2
e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...
- 最短路径BellmanFord , Dijsktra
最短路径算法也是常用的图算法,在网上看到了一份c的代码,写的很清楚,今天有空给写成java的了,就当练手了.另,算法导论362页详细介绍了Bellman-Ford算法,本来打算再写个Dijsktra算 ...
- Dijsktra算法C++实现
Dijsktra算法解决了有向图G=(V,E)上带权的单源最短路径问题.但要求所有边的权值非负. 思想:Dijkstra算法中设置了一顶点集合S,从源点s到集合中的顶点的最终最短路径的权值均已确定.算 ...
- hdu 3790 最短路径问题(最短路,Dijsktra)
题目 Dijsktra基础题,只是多了一个花费,稍稍变动处理就好 #define _CRT_SECURE_NO_WARNINGS #include<string.h> #include&l ...
- POJ 2502 Dijsktra
POJ subway 600K 0MS 题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-,-1隔开,要求花费的时间最少 解决方案:把家 ...
- SPOJ 15. The Shortest Path 堆优化Dijsktra
You are given a list of cities. Each direct connection between two cities has its transportation cos ...
随机推荐
- matlab中max的用法
C = max(A) 返回一个数组各不同维中的最大元素.如果A是一个向量,max(A)返回A中的最大元素.如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一行向量包含了每一列的最大元素. ...
- WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
一.安装vmware没有问题,网络设置以NAT方式(VMnet8是vmware专属的虚拟网卡).安装完毕后设置虚拟机的 VirtualNetworkEditor(可以再开始->所有程序VMwar ...
- SQLServer2008找出所有包含172.17.224.40字样的存储过程
SQLServer2008 找出所有包含172.17.224.40的存储过程 select distinct name from syscomments a,sysobjects b where ...
- Linux系统update-alternatives命令使用
个人博客地址:http://www.cnblogs.com/wdfwolf3/ update-alternatives是ubuntu系统用来进行软件版本切换的命令.比如系统中有几个版本的jdk,把这些 ...
- 自动化运维工具之ansible
自动化运维工具之ansible 一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- 如何在Webstorm中添加js库 (青瓷H5游戏引擎)
js等动态语言编码最大的缺点就是没有智能补全代码,webstorm做到了. qici_engine作为开发使用的库,如果能智能解析成提示再好不过了,经测试80%左右都有提示,已经很好了. 其他js库同 ...
- python入门笔记第一天
查询acsii命令 ord(‘A’) 导入模块python执行系统命令显示文件.查找文件方法1import osa = os.popen('目标').read()a 解释output = os.pop ...
- Application(全局对象,ViewState
Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动创建,直到没有一个网页被访问时结束, ...
- Scroll view 备忘
Stroyboard中使用ScrollView 当我们使用Storyboard开发项目时,如果要往控制器上拖入一个ScrollView并且添加约束设置滚动区域,是有特殊的规定的: 拖入一个scroll ...
- Runtime-b
感谢大神分享 依旧是网上很多runtime的资料,依旧是看不懂,,,这里给大家转化一下runtime,使它由隐晦难懂变得通俗易懂. (虽然截图和语言组织的有些凌乱,但是大家还是一点一点的阅读下去吧,可 ...