zoukankan      html  css  js  c++  java
  • codevs1077 多源最短路

    题目描述 Description

    已知n个点(n<=100),给你n*n的方阵,a[i,j]表示从第i个点到第j个点的直接距离。        

    现在有Q个询问,每个询问两个正整数,a和b,让你求a到b之间的最短路程。        

    满足a[i,j]=a[j,i];

    输入描述 Input Description

     第一行一个正整数n,接下来n行每行n个正整数,满足a[i,i]=0,再一行一个Q,接下来Q行,每行两个正整数a和b。

    输出描述 Output Description

    一共Q行,每行一个整数。

    样例输入 Sample Input

    3

     0 1 1

    1 0 3

    1 3 0

    1

    2 3

    样例输出 Sample Output

    2

    数据范围及提示 Data Size & Hint

    n<=100,Q可能非常大。g[i][j]均>=0

    请使用flyod算法

    #include<bits/stdc++.h>
    using namespace std;
    int n,Q;
    long long a[110][110];
    
    void floyd(){
    	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]);
    }
    
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);	
    	floyd();
    	cin>>Q;
    	while(Q--){
    		int x,y;
    		scanf("%d%d",&x,&y);
    		cout<<a[x][y]<<endl;
    	}
    	return 0;
    }
  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/codetogether/p/7066602.html
Copyright © 2011-2022 走看看