zoukankan      html  css  js  c++  java
  • UVA 567 Risk

    UVA_567

        由于最后查询的情况比较多,所以我们采用“一劳永逸”的floyd算法,直接算出任意两点间的最短路即可。

    #include<stdio.h>
    #include<string.h>
    int f[30][30];
    int main()
    {
    int i,j,k,n,u,v,t;
    t=0;
    while(scanf("%d",&n)==1)
    {
    for(i=1;i<=20;i++)
    for(j=1;j<=20;j++)
    {
    if(i==j)
    f[i][j]=0;
    else
    f[i][j]=1000003;
    }
    for(j=0;j<n;j++)
    {
    scanf("%d",&v);
    f[1][v]=f[v][1]=1;
    }
    for(i=2;i<=19;i++)
    {
    scanf("%d",&n);
    for(j=0;j<n;j++)
    {
    scanf("%d",&v);
    f[i][v]=f[v][i]=1;
    }
    }
    for(k=1;k<=20;k++)
    for(i=1;i<=20;i++)
    for(j=1;j<=20;j++)
    if(f[i][k]+f[k][j]<f[i][j])
    f[i][j]=f[i][k]+f[k][j];
    printf("Test Set #%d\n",++t);
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%d%d",&u,&v);
    printf("%2d to %2d: %d\n",u,v,f[u][v]);
    }
    printf("\n");
    }
    return 0;
    }


  • 相关阅读:
    @atcoder
    @loj
    @atcoder
    @gym
    @codeforces
    @atcoder
    @bzoj
    @loj
    Kafka常用命令
    Kafka入门介绍
  • 原文地址:https://www.cnblogs.com/staginner/p/2195410.html
Copyright © 2011-2022 走看看