Description

When YY was a boy and LMY was a girl, they trained for NOI (National Olympiad in Informatics) in GD team. One day, GD team’s coach, Prof. GUO asked them to solve the following shortest-path problem.
There is a weighted directed multigraph G. And there are following two operations for the weighted directed multigraph:

(1) Mark a vertex in the graph.

(2) Find the shortest-path between two vertices only through marked vertices.

For it was the first time that LMY faced such a problem, she
was very nervous. At this moment, YY decided to help LMY to analyze the
shortest-path problem. With the help of YY, LMY solved the problem at
once, admiring YY very much. Since then, when LMY meets problems, she
always calls YY to analyze the problems for her. Of course, YY is very
glad to help LMY. Finally, it is known to us all, YY and LMY become
programming lovers.

Could you also solve the shortest-path problem?
 

Input

The input consists of multiple test cases. For each test case, the
first line contains three integers N, M and Q, where N is the number of
vertices in the given graph, N≤300; M is the number of arcs, M≤100000;
and Q is the number of operations, Q ≤100000. All vertices are number as
0, 1, 2, … , N - 1, respectively. Initially all vertices are unmarked.
Each of the next M lines describes an arc by three integers (x, y, c):
initial vertex (x), terminal vertex (y), and the weight of the arc (c).
(c > 0) Then each of the next Q lines describes an operation, where
operation “0 x” represents that vertex x is marked, and operation “1 x
y” finds the length of shortest-path between x and y only through marked
vertices. There is a blank line between two consecutive test cases.

End of input is indicated by a line containing N = M = Q = 0.
 

Output

Start each test case with "Case #:" on a single line, where # is the case number starting from 1.

For operation “0 x”, if vertex x has been marked, output “ERROR! At point x”.

For operation “1 x y”, if vertex x or vertex y isn’t marked,
output “ERROR! At path x to y”; if y isn’t reachable from x through
marked vertices, output “No such path”; otherwise output the length of
the shortest-path. The format is showed as sample output.

There is a blank line between two consecutive test cases.

Sample Input

5 10 10
1 2 6335
0 4 5725
3 3 6963
4 0 8146
1 2 9962
1 0 1943
2 1 2392
4 2 154
2 2 7422
1 3 9896
0 1
0 3
0 2
0 4
0 4
0 1
1 3 3
1 1 1
0 3
0 4
0 0 0 Sample Output
Case 1:
ERROR! At point 4
ERROR! At point 1
0
0
ERROR! At point 3
ERROR! At point 4 题目解析:每标记一个点就单独对这个点松弛。要注意有个 "There is a blank line between two consecutive test cases.” 代码如下:
 # include<iostream>
# include<cstdio>
# include<cstring>
# include<queue>
# include<algorithm>
const int INF=<<;
using namespace std;
int mp[][];
int n,m,q,mark[];
void floyd(int k)
{
for(int i=;i<n;++i)
for(int j=;j<n;++j)
mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);
}
void work(int s,int t)
{
if(mark[s]==||mark[t]==)
printf("ERROR! At path %d to %d\n",s,t);
else{
if(mp[s][t]!=INF)
printf("%d\n",mp[s][t]);
else
printf("No such path\n");
}
}
int main()
{
//freopen("Qcin.txt","r",stdin);
int a,b,c,i,j,cas=;
while(scanf("%d%d%d",&n,&m,&q)==)
{
if(n==&&m==&&q==)
break;
if(cas)
printf("\n");
for(i=;i<n;++i)
for(j=;j<n;++j)
mp[i][j]=(i==j)?:INF;
memset(mark,,sizeof(mark));
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
mp[a][b]=min(mp[a][b],c);
}
int comd;
printf("Case %d:\n",++cas);
while(q--)
{
scanf("%d",&comd);
if(comd==){
scanf("%d",&a);
if(mark[a]){
printf("ERROR! At point %d\n",a);
}else{
mark[a]=;
floyd(a);
}
}
else if(comd==){
scanf("%d%d",&a,&b);
work(a,b);
}
}
}
return ;
}

HDU-3631 Shortest Path (floyd)的更多相关文章

  1. hdu 3631 Shortest Path(Floyd)

    题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...

  2. HDU 5636 Shortest Path(Floyd)

    题目链接  HDU5636 n个点,其中编号相邻的两个点之间都有一条长度为1的边,然后除此之外还有3条长度为1的边. m个询问,每次询问求两个点之前的最短路. 我们把这三条边的6个点两两算最短路, 然 ...

  3. HDU - 3631 Shortest Path(Floyd最短路)

    Shortest Path Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u SubmitStat ...

  4. Shortest Path(hdu5636)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  5. HDU - 1973 - Prime Path (BFS)

    Prime Path Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. hdu 3631 Shortest Path

    floyd算法好像很奇妙的样子.可以做到每次加入一个点再以这个点为中间点去更新最短路,效率是n*n. #include<cstdio> #include<cstring> #i ...

  7. HDU ACM 1869 六度分离(Floyd)

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. Leetcode 943. Find the Shortest Superstring(DP)

    题目来源:https://leetcode.com/problems/find-the-shortest-superstring/description/ 标记难度:Hard 提交次数:3/4 代码效 ...

  9. HDU 5938 Four Operations(四则运算)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

随机推荐

  1. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

  2. python中的迭代器和生成器学习笔记总结

    生成器就是一个在行为上和迭代器非常类似的对象.   是个对象! 迭代,顾名思意就是不停的代换的意思,迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次“迭代”,而 ...

  3. HttpClient 的使用

    HttpClient使用: maven: <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient ...

  4. 分析redis key大小的几种方法

    当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大.本文提供了几种方法. 一. bigKeys 这是redis-cli自带的一个命令.对整个redis进行扫 ...

  5. leetcode 最长有效括号

    给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()&quo ...

  6. Hadoop Hive概念学习系列之hive里的分区(九)

    为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”. 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助. 分 ...

  7. YOLOv1-darknet 内容解析

    目录 YOLOv1-darknet 内容解析 1. 核心思想 2. 特点 3. 缺点 4. 算法流程 5. 详细内容 6. 主要参考 YOLOv1-darknet 内容解析 1. 核心思想 目标检测分 ...

  8. 读书笔记:Spring boot实战

    第一章 入门 Spring boot最重要的四个核心 : 1.自动配置:针对很多spring应用程序常见的应用功能,spring boot能自动提供相关配置 2.起步依赖:告诉spring boot需 ...

  9. js delete可以删除对象属性及变量

    ,对象属性删除 function fun(){ this.name = 'mm'; } var obj = new fun(); console.log(obj.name);//mm delete o ...

  10. EasyUI ---- draggable购物车

    @{ ViewBag.Title = "Easyui_draggable"; Layout = "~/Views/Shared/Layouts.cshtml"; ...