30分,AC on #1, #4, #7,其余全部WA,求调
  • 板块学术版
  • 楼主Prolystic
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/10 10:56
  • 上次更新2024/3/10 13:03:12
查看原帖
30分,AC on #1, #4, #7,其余全部WA,求调
695863
Prolystic楼主2024/3/10 10:56

RT, 二分+堆优化 Dijkstra 求调

#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
const int N = 1e4 + 5, M = 2 * 5e4 + 5;
const int MAX = 1e9 + 5;
int n, m, b;
int f[N];
int h[N], e[M], ne[M], w[M], idx;
inline int read(){
    int s = 0; char ch = getchar();
    while(isdigit(ch)){
        s = s * 10 + ch - '0';
        ch = getchar();
    }
    return s;
}
inline void write(int x){
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}
inline void add(int a, int b, int c){
    ++idx;
    e[idx] = b, w[idx] = c;
     ne[idx] = h[a], h[a] = idx;
}
inline bool dijkstra(int max_cst){
    if(f[1] > max_cst)
        return false;
    priority_queue<pii, vector<pii>, greater<pii> > q;
    int dis[N]; bool st[N];
    memset(dis, 0x3f, sizeof dis), memset(st, false, sizeof st);
    dis[1] = 0, q.push((pii){dis[1], 1});
    while(!q.empty()){
        int now_id = q.top().second; q.pop();
        if(st[now_id])
            continue;
        st[now_id] = true;
        for(int i = h[now_id]; i != -1; i = ne[i]){
            int to_id = e[i], new_dis = dis[now_id] + w[i];
            if(dis[to_id] > new_dis && !st[to_id] && f[to_id] <= max_cst){
                dis[to_id] = new_dis;
                q.push((pii){dis[to_id], to_id});
            }
        }
    }
    return dis[n] < b;
}
int main(){
    n = read(), m = read(), b = read();
    memset(h, -1, sizeof h);
    for(int i = 1; i <= n; i++)
        f[i] = read();
    for(int i = 1; i <= m; i++){
        int a = read(), b = read(), c = read();
        add(a, b, c), add(b, a, c);
    }
    if(!dijkstra(MAX)){
        printf("AFK\n");
        return 0;
    }
    int l = 1, r = MAX;
    while(l <= r){
        int mid = l + r >> 1;
        if(dijkstra(mid))
            r = mid - 1;
        else
            l = mid + 1;
    }
    write(l);
    return 0;
}
2024/3/10 10:56
加载中...