UVA 567 Risk【floyd】

题目链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=508

题意:20个点的任意最短路。floyd

代码:

#include <stdio.h>
#include <ctime>
#include <math.h>
#include <string>
#include <iterator>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <iostream>
#include <ctime>
#include <cmath>
#include <cstring>

using namespace std;

int a[25][25];
char c;

int main()
{
    int cases=1;
    int n,m;
    while (~scanf("%d",&n))
    {
        for(int i=1;i<=20;i++)
                for(int j= 1;j<=20;j++)
                {
                    if (i==j) a[i][j] = 0;
                    else a[i][j] = 100000000;
                }
        while(n--)
            {
                scanf("%d",&m);
                a[1][m] = a[m][1] = 1;
            }
        for(int i=2;i<=19;i++)
        {
            scanf("%d",&n);
            while(n--)
            {
                scanf("%d",&m);
                a[i][m] = a[m][i] = 1;
            }
        }
        for(int k=1;k<=20;k++)
            for(int i=1;i<=20;i++)
                for(int j= 1;j<=20;j++)
        {
            if (a[i][k] + a[k][j] < a[i][j])
                a[i][j] =  a[i][k] + a[k][j];
        }
        int s,d;
        scanf("%d",&n);
        printf("Test Set #%d\n",cases++);
        while(n--)
        {
            scanf("%d%d",&s,&d);
            printf("%2d to %2d: %d\n",s,d,a[s][d]);
        }
        printf("\n");
    }
    return 0;
}

版权声明:转载请注明出处。

时间: 2024-10-09 18:23:07

UVA 567 Risk【floyd】的相关文章

UVA 10048 Audiophobia 【floyd】

题目链接: https://vjudge.net/problem/UVA-10048 中文大意: 现在有一个无向图,有C个点,S个边,Q个询问. 每条边有一个权值代表噪音值.若想从u走到v.选择一条最大噪音尽可能小的路线. 对于每一个询问,输出u到v的路径中,输出路线的最大噪音值是多少. 大致思路: 整体的思路还是floyd,只不过中间的转移方程需要变一下. 原始的floyd是求最短路,更新的时候是当有更短的路径存在. 而在本题中,有更新的条件是发现某个路径上噪音最大值小于当前存储的值时,更新此

UVa 10048 Audiophobia【Floyd】

题意:给出一个c个点,s条边组成的无向图,求一点到另一点的路径上最大权值最小的路径,输出这个值 可以将这个 d[i][j]=min(d[i][j],d[i][k]+d[k][j]) 改成 d[i][j]=min(d[i][j],max(d[i][k],d[k][j])) 即为先找出最大权值的一条边,再从这些边中找出最小的 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <

uva 567 - Risk

 Risk  Risk is a board game in which several opposing players attempt to conquer the world. The gameboard consists of a world map broken up into hypothetical countries. During a player's turn, armies stationed in one country are only allowed to attac

HDU1385 Minimum Transport Cost 【Floyd】+【路径记录】

Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7496    Accepted Submission(s): 1918 Problem Description These are N cities in Spring country. Between each pair of cities

【floyd】HDU 1874 畅通工程续

之后的题解偏重实用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也可以放放. 很久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话可以分为以下几种. 1.单源最短路:已知起点(终点),计算从源点到其他各个顶点的最短路径长度. 典型算法:Dijkstra,Bellman-Ford(可以算负的,比较慢),spfa(负权能用,加了松弛操作,速度比较炸天) 2.全局最短路:从一点到另一点,典型如Floyd,A*启发式算法. 重新用floyd写一遍: #include <

POJ2253 Frogger 【Floyd】

讲的是,一只雄青蛙要从一个石头到另外一个石头上去找某只雌青蛙,但是这两个石头隔得太远,青蛙跳不过去,所幸,湖面上还有很多其他石头,所以青蛙可以借助别的石头一步一步地跳向那只雌青蛙所在的石头.显然青蛙可能有多种路径,比如其中一条是 2,3,4,2,1 ,它跳了五次,数字代表每次跳的距离也就是路径上相邻两个石头之间的距离,那么这只青蛙的弹跳能力至少是4才能跳过去.在其他的路径中,可能要求青蛙的弹跳是5,是8,是1,是100,等等,这个问题求青蛙需要的最小弹跳能力.其实也就是个最大值中取最小的问题.

POJ1734 Sightseeing trip 【Floyd】+【最小环】+【路径记录】

Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4830   Accepted: 1857   Special Judge Description There is a travel agency in Adelton town on Zanzibar island. It has decided to offer its clients, besides many other attra

HDU1869 六度分离 【Floyd】

六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4213    Accepted Submission(s): 1718 Problem Description 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意是说,任何2个素

POJ2263&amp;ZOJ1952--Heavy Cargo【Floyd】多源最短路变形

链接:http://poj.org/problem?id=2263 题意:有n个点,m条路,每条路双向的,现在卡车从某点到另一点,卡车的承载无上限,但是马路的承载有上限,问卡车应该承载多少才不会压坏马路. poj2253和它类似,链接:http://poj.org/problem?id=2253 解题报告:Here 就是在两点之间找一条路径,使路径中权值最小的那条边的权值最大,edge数组记录当前路径中最小权值边的权值 #include<cstring> #include<string&