洛谷 U84985 Seaway找路

洛谷 U84985 Seaway找路

题目背景

SeawaySeaway和他的女朋友即将在JDFZJDFZ开启他们的高中生活...但是不幸的是,万恶的分班考试没有让Seaway*Seawa**y*和女朋友分到一个班级(qwq)。浓烈的相思让他们决定在每天中午都去找对方......

题目描述

JDFZJDFZ的校园是一个含有NN个点、MM条边的带权无向图。SeawaySeaway和女朋友一共要相会PP天(1 \le P \le 50001≤P≤5000),并且,每一天他们俩的位置都不确定(很奇妙吧)。每天中午,他们两个当然希望走最少的路就能和对方相见。但SeawaySeaway很快又遇到了难题:他不认路......(连SeawaySeaway都不认路,他的女朋友更不可能认路了),两个路痴怎么能顺利地相会呢?SeawaySeaway灵机一动,想到了一个办法:他要编写程序把每一天他们要走的路径输出出来,这样他和他的女朋友就可以顺顺利利地找到对方啦!但是SeawaySeaway不屑做这么简单的工作(其实是他不会),所以他把这个任务交给了你。

输入格式

第一行包括两个整数:NN,MM

接下来MM行,每行三个整数X,Y,ZX,Y,Z,表示X,YX,Y之间有一条长为ZZ的边。

接下来是一个整数PP,表示Seaway*Seawa**y和女朋友一共要相会PP*天。

接下来的PP行,每行两个整数A,BA,B,表示这一天他们的位置为A,BA,B

输出格式

输出有PP行,每行包含若干个整数,表示A,BA,B之间最短路的路径(输出包含A,BA,B并按升序输出)。如果A,BA,B之间不存在最短路,输出qwq。

输入输出样例

输入 #1复制

输出 #1复制

说明/提示

提示:

不排除Seaway*Seawa**y*一开始就和女朋友在一起的情形。

数据范围:

1 \le N \le 1001≤N≤100,1 \le M \le 100001≤M≤10000。

题解:

\(Seaway\)的基础图论专场T2...

其实是用floyd枚举断点,最后输出ans数组(能保证升序)

如果tot(计数器)得0的话,输出qwq就可以了。

细节上的问题蛮多的,出数据的时候也是费了我很大心思。

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,p,tot,ans[110];
int map[110][110];
int main()
{
    //freopen("#10.in","r",stdin);
    //freopen("#10.out","w",stdout);
    scanf("%d%d",&n,&m);
    memset(map,0x3f,sizeof(map));
    for(int i=1;i<=n;i++)
        map[i][i]=0;
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        map[x][y]=map[y][x]=z;
    }
    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][k]+map[k][j],map[i][j]);
    scanf("%d",&p);
    while(p--)
    {
        tot=0;
        memset(ans,0,sizeof(ans));
        int a,b;
        scanf("%d%d",&a,&b);
        for(int k=1;k<=n;k++)
            if(map[a][k]+map[k][b]==map[a][b] || map[b][k]+map[k][a]==map[a][b])
                ans[++tot]=k;
        if(tot==0)
        {
            printf("qwq\n");
            continue;
        }
        for(int i=1;i<=tot;i++)
            printf("%d ",ans[i]);
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/fusiwei/p/11402139.html