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 ...
随机推荐
- Android 全屏相关操作
1.隐藏标题栏(titlebar) (1)在代码中隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); (2)在Manifest中Applicati ...
- PHP学习笔记 - 入门篇(2)
PHP入门篇(2) 什么是变量 变量是用于存储值的容器,如下 $var = @"6666" 如何定义变量 定义变量就是像服务器的内存申请空间,用来存储数据,eg: <?php ...
- Mac OSX用终端检测文件的sha1值
打开终端,输入shasum空格然后把文件拖进来回车即可;
- iOS安全——代码混淆&反编译
本文是初步了解和集成网上的相关反编译博客, 并做公司内部技术人员分享研讨PPT.
- 跨域访问JSONP CORS
一.JSONP 常用的Jquery框架支持jsonp方式请求,该方式只支持GET方法,传参大小有限,而且需要后台根据jsonp的请求方式进行封装结果返回. 其中参数jsonp默认为callback,j ...
- NOIP201101&&05
NOIP200701奖学金 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 某小学最近得到了一笔赞助 ...
- [UNIX环境高级编程](第三版)中apue.h的问题
编译 gcc -g myls.c 时,报错 ‘找不到头文件 apue.h’ apue.h是作者自己写的一个文件,系统不自带.其中包含了常用的头文件,以及出错处理函数的定义. 需要到 http://ww ...
- Poj OpenJudge 百练 2602 Superlong sums
1.Link: http://poj.org/problem?id=2602 http://bailian.openjudge.cn/practice/2602/ 2.Content: Superlo ...
- vim ctags 的使用
ubantu 先安装 sudo apt-get install ctags 『基本功能使用方法』常用命令列表: 1. $ ctags –R * ($ 为Linux系统Shel ...
- web组件新学--layer
在之前项目后台管理界面开发中,不知道有layer这样好用的组件,我的内心是这样的的...呀!这个框架有弹框,哈哈哈,好开心,不用自己写遮罩层,不用自己写弹框,好开森.. 当知道有layer之后.... ...