How Many Maos Does the Guanxi Worth

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 303    Accepted Submission(s): 93

Problem Description
"Guanxi" is a very important word in Chinese. It kind of means
"relationship" or "contact". Guanxi can be based on friendship, but also
can be built on money. So Chinese often say "I don't have one mao (0.1
RMB) guanxi with you." or "The guanxi between them is naked money
guanxi." It is said that the Chinese society is a guanxi society, so you
can see guanxi plays a very important role in many things.

Here is an example. In many cities in China, the government prohibit the
middle school entrance examinations in order to relief studying burden
of primary school students. Because there is no clear and strict
standard of entrance, someone may make their children enter good middle
schools through guanxis. Boss Liu wants to send his kid to a middle
school by guanxi this year. So he find out his guanxi net. Boss Liu's
guanxi net consists of N people including Boss Liu and the schoolmaster.
In this net, two persons who has a guanxi between them can help each
other. Because Boss Liu is a big money(In Chinese English, A "big money"
means one who has a lot of money) and has little friends, his guanxi
net is a naked money guanxi net -- it means that if there is a guanxi
between A and B and A helps B, A must get paid. Through his guanxi net,
Boss Liu may ask A to help him, then A may ask B for help, and then B
may ask C for help ...... If the request finally reaches the
schoolmaster, Boss Liu's kid will be accepted by the middle school. Of
course, all helpers including the schoolmaster are paid by Boss Liu.

You hate Boss Liu and you want to undermine Boss Liu's plan. All you
can do is to persuade ONE person in Boss Liu's guanxi net to reject any
request. This person can be any one, but can't be Boss Liu or the
schoolmaster. If you can't make Boss Liu fail, you want Boss Liu to
spend as much money as possible. You should figure out that after you
have done your best, how much at least must Boss Liu spend to get what
he wants. Please note that if you do nothing, Boss Liu will definitely
succeed.

 
Input
There are several test cases.

For each test case:

The first line contains two integers N and M. N means that there are N
people in Boss Liu's guanxi net. They are numbered from 1 to N. Boss
Liu is No. 1 and the schoolmaster is No. N. M means that there are M
guanxis in Boss Liu's guanxi net. (3 <=N <= 30, 3 <= M <=
1000)

Then M lines follow. Each line contains three integers
A, B and C, meaning that there is a guanxi between A and B, and if A
asks B or B asks A for help, the helper will be paid C RMB by Boss Liu.

The input ends with N = 0 and M = 0.

It's guaranteed that Boss Liu's request can reach the schoolmaster if you do not try to undermine his plan.

 
Output
For each test case, output the minimum money Boss Liu has to spend
after you have done your best. If Boss Liu will fail to send his kid to
the middle school, print "Inf" instead.
 
Sample Input
4 5
1 2 3
1 3 7
1 4 50
2 3 4
3 4 2
3 2
1 2 30
2 3 10
0 0
 
Sample Output
50
Inf
 
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int inf = 0x3f3f3f3f;
int dis[],map[][];
int vis[];
int n,m;
int dij(int x,int y)
{
for(int i=; i<=n; i++)
dis[i]=map[x][i];
memset(vis,,sizeof(vis));
vis[x]=;
dis[x]=; //注意这个、开始没注意到、
int k=x;
for(int i=; i<n; i++)
{
int mmax=inf;
for(int j=; j<=n; j++) //每个的最短
{
if(!vis[j]&&dis[j]<mmax)
{
mmax=dis[j];
k=j;
}
}
vis[k]=;
for(int j=; j<=n; j++) //更新
{
if(!vis[j]&&dis[j]>dis[k]+map[k][j])
dis[j]=dis[k]+map[k][j];
}
}
return dis[y];
}
int css[];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n== && m==)
break;
int a,b,v,d,f,num;
for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
map[i][j]=map[j][i]=inf;
for(int i=; i<m; i++)
{
cin>>a>>b>>v;
if(map[a][b]>v)
map[a][b]=map[b][a]=v;
}
int ans = ;
for(int i=;i<n;i++)
{
for(int j=;j<=n;j++)
{
css[j] = map[i][j];
map[i][j] = map[j][i] = inf;
}
ans = max(ans,dij(,n));
for(int j=;j<=n;j++)
{
map[i][j] = map[j][i] = css[j];
}
}
if(ans==inf)
puts("Inf");
else
printf("%d\n",ans);
}
return ;
}

HDU 5137 How Many Maos Does the Guanxi Worth 最短路 dijkstra的更多相关文章

  1. hdu 5137 How Many Maos Does the Guanxi Worth 最短路 spfa

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  2. HDU 5137 How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/5120 ...

  3. hdoj 5137 How Many Maos Does the Guanxi Worth【最短路枚举+删边】

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  4. (hdoj 5137 floyd)How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  5. HDU5137 How Many Maos Does the Guanxi Worth(枚举+dijkstra)

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  6. How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  7. 杭电5137How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  8. ACM学习历程——HDU5137 How Many Maos Does the Guanxi Worth(14广州10题)(单源最短路)

    Problem Description    "Guanxi" is a very important word in Chinese. It kind of means &quo ...

  9. hdu5137 How Many Maos Does the Guanxi Worth(单源最短路径)

    题目链接:pid=5137">点击打开链接 题目描写叙述:如今有一张关系网.网中有n个结点标号为1-n.有m个关系,每一个关系之间有一个权值.问从2-n-1中随意去掉一个结点之后,从1 ...

随机推荐

  1. COM组件服务访问权限

    解决办法 :添加ASP.NET权限访问COM组件服务. IIS 5 上为 {MACHINE}\ASPNET IIS 6 和 IIS 7 上为网络服务:NETWORK SERVICE IIS 7.5 上 ...

  2. 理解 Linux 的硬链接与软链接(待研究)

    从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux ...

  3. luoguP2735 电网 Electric Fences

    一道校内模拟赛遇见的题 ** 不会正解就真的很麻烦的 数学题 ** 有一种东西叫 皮克定理 发现的千古神犇: 姓名:George Alexander Pick(所以叫皮克定理呀 国籍:奥地利(蛤!竟然 ...

  4. UVA10212 【The Last Non-zero Digit.】

    暴力可做!!!(十秒还不打暴力!!!)暴力算阶乘边算边取余上代码 #include<iostream> #define int long long //开long long using n ...

  5. MySQL执行计划explain的key_len解析

    前言:当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引.下面演示中,表结构的合理性 ...

  6. 2015309南皓芯实验二 Java面向对象程序设计

    一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习< ...

  7. HTML--1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. day5模块学习--shutil模块

    shutil模块 高级的 文件.文件夹.压缩包 处理模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说:绝对路径,父目录……  但是,os文件的操作 ...

  9. day7 面向对象class()学习

        面向过程 VS 面向对象     编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓 ...

  10. 两种方法设置nginx并发限制下面的白名单策略

    前言: 今天,公司主站突然出现IDE创建应用没反应的问题,经过预发布环境.非代理环境下面的服务测试,均没有问题,定位问题出现在前端.而我们前端有两层代理,一是青松抗D系统,一是我们自己的nginx代理 ...