zoukankan      html  css  js  c++  java
  • 【NOI97】最优乘车

    Description

        H城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。

        一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路巴士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士, 这样换乘几次后到达S公园。

        现在用整数1,2,…N 给H城的所有的巴士站编号,约定这名旅客所在饭店的巴士站编号为1…S公园巴士站的编号为N。

        写一个程序,帮助这名旅客寻找一个最优乘车方案,使他在从饭店乘车到S公园的过程中换车的次数最少。

    Input

        输入文件是INPUT.TXT。文件的第一行有两个数字M和N(1<=M<=100 1<N<=500),表示开通了M条单程巴士线路,总共有N个车站。从第二行到第M刊行依次给出了第1条到第M条巴士线路的信息。其中第i+1行给出的是第i条巴士线路的信息,从左至右按运行顺序依次给出了该线路上的所有站号相邻两个站号之间用一个空格隔开。

    Output

        输出文件是OUTPUT.TXT,文件只有一行。如果无法乘巴士从饭店到达S公园,则输出"N0",否则输出你的程序所找到的最少换车次数,换车次数为0表示不需换车即可到达。

    Sample Input

    3 7

    6 7

    4 7 3 6

    2 1 3 5

    Sample Output

    2

    90分

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int a[510][510];
    int c[510];
    const int MAXN=1000000;
    using namespace std;
    int main()
    {
        freopen("Travel.in","r",stdin);
        freopen("Travel.out","w",stdout);
        int m,n;
        scanf("%d%d",&m,&n);
        for (int i=1;i<=m;i++)
        {    
            char ch=' ';
            int j=0;
            while (ch!=10)
            {
                j++;
                scanf("%d",&c[j]);
                ch=getchar();
            }
            for (int k=1;k<=j-1;k++)
                for (int l=k+1;l<=j;l++)
                    a[c[k]][c[l]]=1;
        }
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                if (a[i][j]==0) a[i][j]=MAXN;
        for (int i=1;i<=n;i++) a[i][i]=0;
        for (int k=1;k<=n;k++)
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
        if (a[1][n]>=MAXN) printf("NO");
            else printf("%d",a[1][n]-1);
        return 0;
        fclose(stdin);
        fclose(stdout);
    }
  • 相关阅读:
    剑指 Offer 41. 数据流中的中位数
    剑指 Offer 19. 正则表达式匹配
    leetcode 75 颜色分类
    Deepin 添加 open as root
    window 下 无损进行其他文件系统(ext4) 到 ntfs 文件系统的转化
    Windows Teminal Preview Settings
    CentOS 7 容器内替换 apt-get 源为阿里源
    Ubuntu 20.04 安装 Consul
    elementary os 15 添加Open folder as root
    elementary os 15 gitbook install
  • 原文地址:https://www.cnblogs.com/liumengyue/p/5186344.html
Copyright © 2011-2022 走看看