• 73. 找最佳通路


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

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

    问题描述
    有 n 个 城市,它们之间的交通情况已知。现在要求根据一个出发点Cs和一个到达点Cd,请编程序,由计算机找到从城市Cs 到 Cd 的一条路径,要求经过城市最少。

    【输入格式】

    输入文件: city.in

    输入由若干行组成,第一行有四个整数,n(1≤n≤50)、m(1≤m≤n*n)和s(1≤s≤n)、e(1≤e≤n);n表示城市数,m表示道路数,s和e表示出发点和到达点。

    第 2至m+1行是m 条边的 信息,每行两个整数,为边的起点和终点。

    【输出格式】

    输出文件: city.out

    一个整数,经过城市的个数(包括起点和终点)

    【输入样例】

    输入文件名:city.in

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

    输出文件名:city.out

    5

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    
    using namespace std;
    const int N=55;
    const int INF=99999999;
    
    int map[N][N];
    int n,m,start,endd;
    int u,v;
    
    inline int read()
    {
    	int x=0;int f=1;char c=getchar();
    	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    	while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
    	return x*f;
    }
    
    int main()
    {
    	freopen("city.in","r",stdin);
    	freopen("city.out","w",stdout);
    	n=read(),m=read(),start=read(),endd=read();
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			map[i][j]=INF;
    	for(int i=1;i<=n;i++)
    		map[i][i]=0;
    	for(int i=1;i<=m;i++)
    		u=read(),
    		v=read(),
    		map[u][v]=map[v][u]=1;
    	for(int k=1;k<=n;k++)
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=n;j++)
    				map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
    	printf("%d",map[start][endd]+1);
    	return 0;
    }
    

      

  • 相关阅读:
    java空指针异常
    iOS 中strong,weak,copy,assign区别
    VisualSVN修改默认端口 443、8443 的 方法
    SVNServer 执行上下文错误: 远程主机强迫关闭了一个现有的连接。
    阿里云打开端口(涉及端口)的操作
    使用VisualSVN Server搭建SVN服务器(测试通过)
    SQL server触发器中 update insert delete 分别给写个例子被
    SQL中字符串截取函数(SUBSTRING)
    精选 SQL 脚本
    树形结构有关的SQL
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7158611.html
Copyright © 2020-2023  润新知