arc159a

题目链接:https://atcoder.jp/contests/arc159/tasks/arc159_a

打个表可以发现,每一个复制块的的最短路都相等。

思路:对询问的两个值进行取模运算,再到原最短路上进行查询即可。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int dist[N][N];
void solve(){
    int n,m;
    cin>>n>>m;
    memset(dist,0x3f,sizeof(dist));
    for (int i=1;i<=n;i++){
        for (int j=1;j<=n;j++){
            int x;
            cin>>x;
            if (x) dist[i][j] = 1;
        }
    }
    for (int k=1;k<=n;k++){
        for (int i=1;i<=n;i++){
            for (int j=1;j<=n;j++){
                dist[i][j] = min(dist[i][j],dist[i][k]+dist[k][j]);
            }
        }
    }
    int q;
    cin>>q;
    for (int i=1;i<=q;i++){
        long long x,y;
        cin>>x>>y;
        x = (x%n==0)?n:x%n;
        y = (y%n==0)?n:y%n;
        if (dist[x][y]==0x3f3f3f3f) cout<<-1<<'\n';
        else cout<<dist[x][y]<<'\n';
    }
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int T;
    T = 1;
    //cin>>T;
    while(T--) solve();
    return 0;
}

posted @   安潇末痕  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示