zoukankan      html  css  js  c++  java
  • 267. [NOI1997] 最优乘车

    ★★   输入文件:bustravel.in   输出文件:bustravel.out   简单对比

    时间限制:1 s   内存限制:128 MB

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

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

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

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

    输入输出

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

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

    样例

    输入文件

    3 7
    6 7
    4 7 3 6
    2 1 3 5
    

    输出文件

    2

    #include<iostream> 
    #include<vector>
    #include<cstdio>
    #include<cstring>
     
    using namespace std;
    const int INF=9999999;
     
    int n,m,c,x,a[101][501],f[501][501];
     
    void read()
    {
    	scanf("%d%d",&m,&n);
    	for(int i=1;i<=n;i++)	
    		for(int j=1;j<=n;j++)
    			f[i][j]=INF;
    	for(int i=1;i<=m;i++)
    	{
    		c=0;char b=' ';
    		while(b!='
    '/*&&b!='/r'*/)
    		{
    			scanf("%d",&x);b=getchar(); 
    			a[i][++c]=x;
    			for(int j=1;j<c;j++)
    				f[a[i][j]][x]=1;
    		}
    	}
    	for(int i=1;i<=n;i++)f[i][i]=0;
    }
     
    void floyd()
    {
    	for(int k=1;k<=n;k++)
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=n;j++)
    				f[i][j]=min(f[i][k]+f[k][j],f[i][j]);
    }
     
    int main()
    {
    	freopen("bustravel.in","r",stdin);
    	freopen("bustravel.out","w",stdout);
    	read();
    	floyd();
    	if(f[1][n]>=INF)printf("NO
    ");
    	else printf("%d
    ",f[1][n]-1);
    	return 0;
    }
    

      

  • 相关阅读:
    layout_alignStar 与 android:layout_alignEnd
    Java学习过程中的一些知识点
    L1-054 福到了->团体程序设计天梯赛-练习集
    JS冒号的作用
    JS中(function(){xxx})(); 这种写法是什么意思?
    去除vue上方的60px空白
    vue-cli · Failed to download repo vuejs-templates/webpaack: Response code 404
    Windows 7 MBR的修复与Linux产品正确卸载
    折腾一天安装Centos7,以及后面恢复Win7引导的曲折历程
    Windows 7硬盘安装CentOS 6.4 双系统 (WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04))
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7156864.html
Copyright © 2011-2022 走看看