poj 1797 一条路径中的最小边 再找出最大的

Sample Input

1 // T
3 3// n m
1 2 3//u v w
1 3 4
2 3 5
Sample Output

Scenario #1:
4

 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cstring>
 4 # include <algorithm>
 5 # include <cmath>
 6 # define LL long long
 7 using namespace std ;
 8
 9 const int MAXN=1010;
10 const int INF=0x3f3f3f3f;
11 int cost[MAXN][MAXN];
12 int lowcost[MAXN];
13 bool vis[MAXN];
14 int n ;
15
16 void Dijkstra(int beg)
17 {
18     for(int i=1;i<=n;i++)
19     {
20         lowcost[i]=0;
21         vis[i]=false;
22     }
23     lowcost[beg]=INF;
24     for(int j=0;j<n;j++)
25     {
26         int k=-1;
27         int Max=0;
28         for(int i=1;i<=n;i++)
29             if(!vis[i]&&lowcost[i]>Max)
30             {
31                 Max=lowcost[i];
32                 k=i;
33             }
34         if(k==-1)break;
35         vis[k]=true;
36         for(int i=1;i<=n;i++)
37             if(!vis[i]&&min(lowcost[k],cost[k][i])>lowcost[i] )
38                 lowcost[i]=min(lowcost[k],cost[k][i]);
39     }
40 }
41
42 int main()
43 {
44   //  freopen("in.txt","r",stdin) ;
45     int T;
46     int m;
47     scanf("%d",&T);
48     int iCase=0;
49     while(T--)
50     {
51         iCase++;
52         scanf("%d%d",&n,&m);
53         memset(cost,0,sizeof(cost));
54         int u,v,w;
55         while(m--)
56         {
57             scanf("%d%d%d",&u,&v,&w);
58             cost[u][v]=cost[v][u]=max(cost[u][v],w);
59         }
60         Dijkstra(1);
61         printf("Scenario #%d:\n",iCase);
62         printf("%d\n\n",lowcost[n]);
63     }
64     return 0;
65 }

时间: 2024-09-30 06:30:48

poj 1797 一条路径中的最小边 再找出最大的的相关文章

poj 2253 一条路径中的最大边 再找出最小的

题目大意,有两只青蛙,分别在两个石头上,青蛙A想要到青蛙B那儿去,他可以直接跳到B的石头上,也可以跳到其他石头上,再从其他石头跳到B那儿,求青蛙从A到B的所有路径中最小的Frog Distance,我们定义Frog Distance为从A到B的一条路径中最大的一条边假如点0到点1有3条路第一条路径 会经过2个点 3条边 边的值为 1 4 3第二条路径 一条边 5第三条路径 1 3 2 那么 Frog Distance 分别为 4 5 3 则最终输出3 Sample Input 20 03 4 3

计算student_grade.txt 中 语文成绩的平均值, 找出数学成绩最高的学生是谁

题目要求: 计算student_grade.txt 中 语文成绩的平均值, 找出数学成绩最高的学生是谁 方法一: with open('student_grade.txt', 'r', encoding='utf-8') as f: data = f.read() #读取student_grade.txt的内容给data(文本) data_lines=data.splitlines() #把文本转换成列表,同时去掉换行 empty={} #定义一个空字典 for i in data_lines:

POJ 2253 Frogger (求每条路径中最大值的最小值,Dijkstra变形)

Frogger Time Limit: 1000MS Memory Limit: 65536K Description Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tou

在一个SQL Server表中的多个列找出最大值

在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) DROP TABLE ##TestTable CREATE TABLE ##TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(40), UpdateByApp1Date DATE

用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据。

比如:[1, 2, 3, 3, 2, 2, 6, 7, 8, 9] 中 2 or 3 分析:这道题目,实现比较容易,方法也不少,但要用最小的空间复杂度来看的话, 和充分考虑一下数据的下标和数据元素值的特点,比如如果把第 i 个位置放的值是 i,不是的情况做交换,去循环对比. 时间复杂度O(n),空间复杂度可到常量级 测试代码如下: public static void main(String[] args) { int n=10; List<Integer> list = new ArrayL

poj——2752Seek the Name, Seek the Fame(kmp专练 找出前后相同的字串)

Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16035 Accepted: 8158 Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to th

一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出

#include<stdio.h>int main(){ void function(int * str, int size, int *p1, int *p2); int i = 0; int num1 = 0, num2 = 0; int arr[10] = {0}; int len = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < len; i++) {  scanf("%d", &arr[i]); }  f

一个链表中包含环,请找出该链表的环的入口结点

方法一.用HashSet来解决 1 public ListNode EntryNodeOfLoop(ListNode pHead){ 2 HashSet<ListNode> hs = new HashSet<ListNode>(); 3 while(pHead!=null){ 4 if(!hs.add(pHead))//如果包含了,那么这个就是入口结点 5 return pHead; 6 pHead = pHead.next; 7 } 8 return null; 9 } 方法二.

找出给定的一个字符串中最大的不重复子串,不重复子串即一个子串中不出现两个相同的字符

思路一:先找出一个字符串中所有子串,再找出所有子串中最长的那一个:思路二:每次找出的子串长度都比上一次的子串长,则最后的子串即是最长子串的长度数.我选择的是第二种方法. public class FindSubstringMaxlengthNoduplicate { public static void main(String[] args) { String s = "adcdghcwioizhfksjdyuiodfhjskhgkhgeisdcjdkh"; ArrayList<