uva 10986
ford 超时 使用优先队列的Dijkstra 算法
//#include <cstdio>
//#include <cstring>
//#include <algorithm>
//#define INF 500000000
//using namespace std;
//int a[20010][20010];
//int main()
//{
// int t, ca = 1;
// scanf("%d",&t);
// while(t--)
// {
// int n,m,s,v;
// scanf("%d%d%d%d",&n,&m,&s,&v);
// for(int i = 0; i <= n; i++)
// for(int j = 0; j <= n; j++)
// {
// if(i == j)
// a[i][j] = 0;
// else
// a[i][j] = INF;
// }
// for(int i = 0; i < m; i++)
// {
// int x,y,w;
// scanf("%d%d%d",&x,&y,&w);
// a[x][y] = a[y][x] = w;
// }
// for(int k = 0; k < n; k++)
// for(int i = 0; i < n; i++)
// for(int j = 0; j < n; j++)
// {
// a[i][j] = min(a[i][j], a[i][k]+a[k][j]);
// }
// if(a[s][v] < INF)
// printf("Case #%d: %d\n",ca++,a[s][v]);
// else
// printf("Case #%d: unreachable\n",ca++);
// }
// return 0;
//}
#include <cstdio>
#include <cstring>
#include <queue> #define N 20005
#define M 100005
#define INF 1<<28 struct node
{
int id, dd;
node(int i, int j)
{
id = i;
dd = j;
}
bool operator < (const node &it) const
{
return dd > it.dd;
}
}; int first[M],v[M],w[M],next[M],dis[N],vis[N]; int Dijkstra(int st, int ed, int n)
{
for(int i = 0; i < n; i++)
{
vis[i] = 0;
dis[i] = INF;
}
dis[st] = 0;
std::priority_queue<node> Q;
Q.push(node(st, 0));
while(!Q.empty())
{
node t = Q.top();
Q.pop();
if(vis[t.id]) continue;
if(t.id == ed)
return t.dd;
vis[t.id] = 1;
for(int e = first[t.id]; e != -1; e = next[e])
{
if(dis[v[e]] > dis[t.id] + w[e])
{
dis[v[e]] = dis[t.id] + w[e];
Q.push(node(v[e], dis[v[e]]));
}
}
}
return INF;
} int main()
{
int ca = 1;
int t;
scanf("%d", &t);
while(t--)
{
int n,m,s,d;
scanf("%d%d%d%d", &n, &m, &s, &d);
memset(first, -1, sizeof(first));
int l = 0;
for(int i = 0; i < m; i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
next[l] = first[a];
v[l] = b;
w[l] = c;
first[a] = l++;
next[l]=first[b];
v[l] = a;
w[l] = c;
first[b] = l++;
}
int ans = Dijkstra(s, d, n);
printf("Case #%d: ", ca++);
if(ans == INF)
puts("unreachable");
else
printf("%d\n", ans);
}
return 0;
}
uva 10986的更多相关文章
- UVA.10986 Fractions Again (经典暴力)
UVA.10986 Fractions Again (经典暴力) 题意分析 同样只枚举1个,根据条件算出另外一个. 代码总览 #include <iostream> #include &l ...
- uva 10986 - Sending email(最短路Dijkstra)
题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...
- UVa 10986 - Sending email
题目大意:网络中有n个SMTP服务器,有m条电缆将它们相连,每条电缆传输信息需要一定的时间.现在给出信息的起点和终点,计算所需的最小时间. 有权图上的单源最短路问题(Single-Source Sho ...
- UVA 10986 Sending email 最短路问题
基本的最短路问题 就是数据需要稍微处理一下.(N比较大)dijkstra也要优化.不优化应该会T: #include <map> #include <set> #include ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
随机推荐
- 去蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享
前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的.之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术 ...
- Exception与相关
怎么写一个exception类, 直接抛出去,主要是写一个构造函数里面的Msg消息,这个可以提前写出来. try...catch..finally 一般都是一起的,try 中有异常执行语句, catc ...
- Java之绘制五环图案
前面已经介绍过绘制方法.这里不再赘述. package com.caiduping; import java.awt.BasicStroke; import java.awt.Color; impor ...
- JDBC之初识
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- Agile.Net 组件式开发平台 - 组件开发示例
所谓组件式开发平台,它所有的功能模块都是以组件的形式扩展的,下面我来演示一个简单的组件开发例程. Agile.Net开发管理平台项目,已经托管在开源中国码云平台(http://git.oschina. ...
- linux/centos下安装nginx(rpm安装和源码安装)详细步骤
Centos下安装nginx rpm包 ...
- 关于在windows7中使用Virtual Box 按照 安卓虚拟机几个注意事项
1.选择安卓原生镜像的问题 选择带PC的字眼的,也就是给平板PC使用的那个,我使用的版本是android-x86-4.0-r1-eeepc.iso其他类似版本也是可以的,因为我已经成功实践啦. 下载地 ...
- blazeds使用remote访问
欢迎交流转载,请注明出处:http://www.cnblogs.com/shizhongtao/p/3487128.html 1.配置及说明 jar包说明 从官方上下的Blazeds中,默认的配置有 ...
- indeed2017校招在线编程题(网测)三
A. Calculate Sequence 分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写. B. 忘了叫啥了. 就是有a-j十个字符组成的字符串, ...
- [GeekBand] 探讨C++新标准之新语法——C++ 11~14
一. 可变参数模板(Variadic Templates) 在C++11中,出现了参数数目可变的模板,这部分在之前C++高级编程的时候就有学习到. 其实,在C中就有类似的设定.最常用的printf() ...