#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. Shell编程之Shift的用法

    位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...

  2. 洛谷 P1336 最佳课题选择

    P1336 最佳课题选择 题目提供者 yeszy 标签 动态规划 福建省历届夏令营 传送门 难度 尚无评定 题目描述 Matrix67要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择.由于课 ...

  3. 基于matlab的GUI界面开发软件

    matlab工具deploytool编译M为可执行程序 http://blog.sina.com.cn/s/blog_60f8483a0100gnsm.html

  4. HDU 题目分类

    转载自新浪博客,, http://blog.sina.com.cn/s/blog_71ded6bf0100tuya.html 基础题: 1000.1001.1004.1005.1008.1012.10 ...

  5. jquery 之选择符

    css:选择符$('#selected-plays > li') 使用了子元素组合符,查找 ID 为 selected-plays 的元素的子元素( > )中所有的列表 li$('#sel ...

  6. 修改Tomcat命令窗口的名字

    在运行多个tomcat窗口的时候,可以通过修改tomcat命令窗口的名字来区分不同的tomcat,修改如下: 找到tomcat下面的这个文件:tomcat_home\bin\catalina.bat, ...

  7. apache2.4配置虚拟主机

    step1 启用 httpd-vhosts.conf 找到E:/apache/Apache24/conf 中httpd.conf 文件,取消注释下面这句话 step2 在 httpd-vhosts.c ...

  8. 获取Ip 的地域等信息接口-实例

    今天项目要用到 查询访问网站用户的IP 然后网上查询了 资料还很多 不过有些已经失效了 在这总结下 腾讯,pconline 的API已经失效 不能使用 淘宝的IP接口地址: http://ip.tao ...

  9. Android Activity与Service的交互方式

    参考: http://blog.csdn.net/gebitan505/article/details/18151203 实现更新下载进度的功能 1. 通过广播交互 Server端将目前的下载进度,通 ...

  10. Linux脚本

    放置在/usr/local/sbin下面: 收到一个问题:"-bash XXX 没有权限":需要在此目录下执行chmod +x filename 收到一个问题:"-bas ...