#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的更多相关文章

  1. 【图论】深入理解Dijsktra算法

    1. Dijsktra算法介绍 Dijsktra算法是大牛Dijsktra于1956年提出,用来解决有向图单源最短路径问题.但不能解决负权的有向图,若要解决负权图则需要用到Bellman-Ford算法 ...

  2. 【BZOJ-2725】故乡的梦 Dijsktra + Tarjan + Dinic + BFS + 堆

    2725: [Violet 6]故乡的梦 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 502  Solved: 173[Submit][Status ...

  3. Codeforce - Street Lamps

    Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is ...

  4. Codeforce Round #216 Div2

    e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...

  5. 最短路径BellmanFord , Dijsktra

    最短路径算法也是常用的图算法,在网上看到了一份c的代码,写的很清楚,今天有空给写成java的了,就当练手了.另,算法导论362页详细介绍了Bellman-Ford算法,本来打算再写个Dijsktra算 ...

  6. Dijsktra算法C++实现

    Dijsktra算法解决了有向图G=(V,E)上带权的单源最短路径问题.但要求所有边的权值非负. 思想:Dijkstra算法中设置了一顶点集合S,从源点s到集合中的顶点的最终最短路径的权值均已确定.算 ...

  7. hdu 3790 最短路径问题(最短路,Dijsktra)

    题目 Dijsktra基础题,只是多了一个花费,稍稍变动处理就好 #define _CRT_SECURE_NO_WARNINGS #include<string.h> #include&l ...

  8. POJ 2502 Dijsktra

    POJ subway 600K 0MS 题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-,-1隔开,要求花费的时间最少 解决方案:把家 ...

  9. SPOJ 15. The Shortest Path 堆优化Dijsktra

    You are given a list of cities. Each direct connection between two cities has its transportation cos ...

随机推荐

  1. TUXEDO管理命令总结

    tmboot  启动服务: 参数说明: -l  lmid 启动逻辑服务器名为lmcd服务器上的所有进程 -g grpname 启动GROUP名为grpname的所有进程 -i  srvid 启动SRV ...

  2. Object-C内存管理基础

    如果你通过手工alloc的方式分配内存实例化创建一个对象,之后你需要release这个对象,同理你也不能手工释放(release)一个能自动释放(autoreleased)的对象,因为这个样子会使你的 ...

  3. 图像载入 imread()[OpenCV 笔记4]

    Mat imread( ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV ...

  4. Windows+Git+TortoiseGit+COPSSH安装图文教程 转载

    准备工作: 1. Git-1.8.1.2-preview20130201.exe 下载地址: https://code.google.com/p/msysgit/downloads/list 2. C ...

  5. c#写个基础的Socket通讯

    晚上想写点东西,想想把我刚来公司学的Sockt通讯写上来吧.要写的简单易懂点,新人们可以借鉴下哦,用控制台写. 先得说说Socket,与TCP/UDP啥关系,一直讲什么Socket通讯,TCP通讯,都 ...

  6. JS判断浏览器类型以及版本号

    <script type="text/javascript">        (function(){            window.nav={};       ...

  7. 移动web页面使用微软雅黑字体的问题

    很多前端工程师在开发手机页面的时候,发现视觉设计师们喜欢用微软雅黑作为中文字体进行设计,于是写页面的时候也定义 font-family 为微软雅黑,后来发到线上后,细心的产品经理发现页面的字体不是微软 ...

  8. WPF内嵌代码和后台代码简单混合使用

    下面实例展示了WPF内嵌代码和后台代码混合使用,一个简单基础的实例: xaml文件: <Window x:Class="WPF内嵌代码和后台代码混合使用.MainWindow" ...

  9. C++11老关键字的新含义(auto, using,extern)

    http://blog.csdn.net/cnsword/article/details/8034947 公司可以使用c++11.看大牛的代码模仿使用,所以现在已经不知道什么使用的是c++的语法还是c ...

  10. ASP.NET MVC轻教程 Step By Step 13——页面布局

    一般在一个网站中页面会使用相同的结构和元素,如果每个页面都要重复添加这些元素,不仅繁琐更会给我们后期维护带来大麻烦.所以我们采用网页模板之类的技术,将固定不变的元素放入模板,同时留下一些占位符供页面各 ...