acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • 二分答案+链式前向星+deque

    #include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 1009, M = 20005; int n, m, k, head[N], ver[M], nxt[M], edge[M], tot; int d[N]; deque <int> dq; void add (int u, int v, int w){ ver[++tot] = v, edge[tot] = w; nxt[tot] = head[u], head[u] = tot; } bool check (int t){ memset(d, 0x3f, sizeof d); d[1] = 0; dq.push_back(1); while (dq.size()){ int x = dq.front(); dq.pop_front(); for (int i = head[x]; i; i = nxt[i]){ int y = ver[i], z = (edge[i] > t ? 1 : 0); if (d[y] > d[x] + z){ d[y] = d[x] + z; if (!z) dq.push_front(y); else dq.push_back(y); } } } return d[n] <= k; } int main(){ cin >> n >> m >> k; for (int i = 1; i <= m; i++){ int u, v, w; cin >> u >> v >> w; add (u, v, w); add (v, u, w); } int l = 0, r = 1e8; while (l < r){ int mid = l + r >> 1; if (check(mid)) r = mid; else l = mid + 1; } cout << (l == 1e8 ? -1 : l); return 0; }

    userId_undefined

    亶

    出道萌新荣耀黄金时间刺客空间掌握者时空双修者
    14阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页