P2296 寻找道路

#include <bits/stdc++.h>
using namespace std;
const int maxn = 10005;
set<int> to[maxn];
queue<int> q;int s, t;int n, m;set<int> to2[maxn];
int dist[maxn], used[maxn], dist2[maxn];
int main() {
//    freopen("input.in", "r", stdin);
    cin >> n >> m;
    for(int i = 1; i <= m; i++) {
        int x, y;
        cin >> x >> y;
        to[x].insert(y);
        to2[y].insert(x);
    }
    cin >> s >> t;
    //-----------------
    q.push(t);
    memset(dist2, -1, sizeof(dist2));
    dist2[t] = 0;
    memset(used, 0, sizeof(used));
    used[t] = 1;
    while(!q.empty()) {
        int x = q.front();
        q.pop();
        set<int>::iterator it;
        for(it = to2[x].begin(); it != to2[x].end(); it++) {
            if(!used[*it]) {
                dist2[*it] = dist2[x] + 1;
                used[*it] = 1;
                q.push(*it);
            }
        }
    }
    memset(used, 0, sizeof(used));
    for(int i = 1; i <= n; i++) {
        if(dist2[i] == -1) {
            set<int>::iterator it;
            for(it = to2[i].begin(); it!=to2[i].end(); it++) {
                used[*it] = 1;
            }
        }
    }
    //-----------------
    memset(dist, -1, sizeof(dist));
    dist[s] = 0;
    q.push(s);
    used[s] = 1;
    while(!q.empty()) {
        int x = q.front();
        q.pop();
        set<int>::iterator it;
        for(it = to[x].begin(); it != to[x].end(); it++) {
            if(!used[*it]) {
                dist[*it] = dist[x] + 1;
                used[*it] = 1;
                q.push(*it);
            }
        }
    }
    cout << dist[t];
}

posted on   蒟蒻konjac  阅读(170)  评论(0编辑  收藏  举报

编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示