• Problem: 八中上厕所


    Problem: 八中上厕所

    Problem: 八中上厕所

    Time Limit: 1 Sec  Memory Limit: 128 MB

    Description

    八中一共有n个建筑物,m条路,每条路长度都为1。
    某天,小z正在八中参观。很不幸,小z前一天喝了很多水。然而每当他想上厕所时,他所在大楼的厕所
    总是挤满了人,所以他必须到另一栋楼去上厕所。
    请你帮小z计算出他到目的地的距离。

    Input

    第一行n,m,表示n个建筑物,m条路
    接下来m行,每行两个数a,b,表示a,b之间有条路
    在下来一个数p,表示尿急的次数
    接下来p行,每行两个数a,b,a表示小z所在的大楼,b为小z的目的地
    n<=100,p<=5000

    Output

    对于每个询问,输出一个数c,表示a,b之间最短路的长度

    Sample Input1

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

    Sample Output1

    2
    2
    1

    Sample Input2

    10 18
    1 2
    1 3
    1 5
    1 8
    2 4
    2 6
    2 7
    2 8
    2 10
    3 8
    3 9
    4 5
    4 6
    5 8
    6 7
    6 9
    7 10
    8 10
    10
    2 5
    5 2
    2 3
    1 3
    6 4
    6 8
    7 5
    3 9
    2 9
    7 8

    Sample Output2

    2
    2
    2
    1
    1
    2
    3
    1
    2
    2

    HINT

    floyd入门

    #include<stdio.h>
    #include<string.h>
    #define INF 0x3f3f3f3f
    int n,m,a,b,p,w[101][101];
    int main() {
    	scanf("%d %d",&n,&m);
    	memset(w,0x3f,sizeof(w));
    	for(int i=1; i<=m; i++)
    		scanf("%d %d",&a,&b),
    		w[a][b]=w[b][a]=1;
    	for(int d=1; d<=n; d++)
    		for(int i=1; i<=n; i++)
    			for(int j=1; j<=n; j++)
    				if(w[i][d]!=INF&&w[d][j]!=INF&&w[i][d]+w[d][j]<w[i][j])
    					w[i][j]=w[i][d]+w[d][j];
    	scanf("%d",&p);
    	for(int i=0; i<p; i++) {
    		scanf("%d %d",&a,&b);
    		printf("%d
    ",w[a][b]);
    	}
    }
    
  • 相关阅读:
    第二高的薪水
    leecode 删除排序数组中的重复项
    leecode 17. 电话号码的字母组合
    dubbo 限流之TpsLimitFilter
    G1总结
    leecode 3. 无重复字符的最长子串
    mysql是如何解决脏读、不可重复读、幻读?
    归并排序
    PostgreSQL管理数据库安全
    Oracle Database 19c 技术架构(三)
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740392.html
Copyright © 2020-2023  润新知