题目大意:给定一张\(N\)个点的图,构成了\(M\)个团,每个团内的边权均相等,求图上有多少个点满足到\(1\)号节点和\(N\)号节点的最大值最小。

题解:

本题的核心是如何优化连边,考虑对于每一个团增加一个虚拟节点,并让每个节点到虚拟节点连一条边权为\(t_i\)的有向边,虚拟节点到团中每一个点连一条边权为\(0\)的有向边,最后跑最短路求解即可。

注意:数据中有\(0\)下标的节点,读入时需要忽略,别问我怎么知道的。。。

代码如下

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

struct node {
int to;
LL w;
node(int _to = 0, LL _w = 0) {
to = _to;
w = _w;
}
}; int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T, kase = 0;
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
vector<vector<node>> adj(n + m);
for (int i = 0; i < m; i++) {
LL w;
int cnt;
cin >> w >> cnt;
while (cnt--) {
int x;
cin >> x;
if (x == 0) continue;
x--;
adj[i + n].emplace_back(x, 0);
adj[x].emplace_back(i + n, w);
}
}
auto dij = [&](int st) {
vector<int> expand(n + m, 0);
vector<LL> d(n + m, 1e18);
priority_queue<pair<LL, int>> q;
d[st] = 0, q.push(make_pair(0, st));
while (!q.empty()) {
int x = q.top().second;
q.pop();
if (expand[x]) continue;
expand[x] = 1;
for (auto e : adj[x]) {
int y = e.to, w = e.w;
if (d[y] > d[x] + w) {
d[y] = d[x] + w;
q.push(make_pair(-d[y], y));
}
}
}
return d;
};
vector<LL> dst = dij(0);
vector<LL> ded = dij(n - 1);
if (dst[n - 1] == 1e18) {
cout << "Case #" << ++kase << ": Evil John" << endl;
} else {
LL ans = 1e17;
vector<int> p;
for (int i = 0; i < n; i++) {
LL ret = max(dst[i], ded[i]);
if (ret < ans) {
ans = ret;
p.clear();
p.push_back(i + 1);
} else if (ret == ans) {
p.push_back(i + 1);
}
}
cout << "Case #" << ++kase << ": " << ans << endl;
cout << p[0];
for (int i = 1; i < (int)p.size(); i++) {
cout << " " << p[i];
}
cout << endl;
}
}
return 0;
}

【HDU5521】Meeting的更多相关文章

  1. 【HDOJ5521】Meeting(最短路)

    题意:有n个点,m个点集,每个点集中有e[i]个点,同一点集的点互相之间到达需要t[i]单位的时间,求min(max(dis(1,i),dis(i,n))),i属于[1,n] 输出最小值并増序输出所有 ...

  2. 【LeetCode】堆 heap(共31题)

    链接:https://leetcode.com/tag/heap/ [23] Merge k Sorted Lists [215] Kth Largest Element in an Array (无 ...

  3. 【LeetCode】排序 sort(共20题)

    链接:https://leetcode.com/tag/sort/ [56]Merge Intervals (2019年1月26日,谷歌tag复习) 合并区间 Input: [[1,3],[2,6], ...

  4. 【LeetCode】贪心 greedy(共38题)

    [44]Wildcard Matching [45]Jump Game II (2018年11月28日,算法群衍生题) 题目背景和 55 一样的,问我能到达最后一个index的话,最少走几步. 题解: ...

  5. 一、Daily Scrum Meeting【Alpha】------Clover

    [Alpha]Daily Scrum Meeting 第一次 [Alpha]Daily Scrum Meeting 第二次 [Alpha]Daily Scrum Meeting 第三次 [Alpha] ...

  6. 【Beta】 第七次Daily Scrum Meeting

    第七次meeting会议 [Beta] 第七次Daily Scrum Meeting 一.本次会议为第七次meeting会议 二.时间:10:00AM-10:20AM 地点:禹州楼 三.会议站立式照片 ...

  7. 【Alpha】Daily Scrum Meeting

    一 博客集合贴 11月15日 [Alpha]Daily Scrum Meeting——blog1 11月18日 [Alpha]Daily Scrum Meeting——blog2 11月19日 [Al ...

  8. 【Alpha】阶段第十次Scrum Meeting

    [Alpha]阶段第十次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 登出接口 编写后端说明文档 赵智源 编写脚本实现测试的持续集成 前测试点页面跳转逻辑测试 ...

  9. 【Alpha】阶段第九次Scrum Meeting

    [Alpha]阶段第九次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 编写获得所有学院接口 登出接口 赵智源 编写alpha版后测试点测试用例 编写脚本实现测 ...

随机推荐

  1. 使用webpack搭建一个多页应用

     一.前言 最近需要为公司的活动写8个左右的移动端分享页面,有比较多的页面是公用的,如果用传统的方式来写的话,对于公用的代码抽取,css代码的压缩都是比较麻烦的,所以选择了webpack来搭建一个基本 ...

  2. jstack使用

    top -p 22072 -H  -p:查看某个进程 -H列出所有的线程 printf '%x' 22398 (16进制线程号) sudo -u tomcat jstack 22072 | grep ...

  3. [LuoguP2164][SHOI2007]交通网络_拓扑排序_概率期望

    交通网络 题目链接:https://www.luogu.org/problemnew/solution/P2164 数据范围:略. 题解: 直接算不好算,我们考虑建反图然后$Toposort$. 这样 ...

  4. bootstrap-table的一些配置参数例子

    $('#reportTable').bootstrapTable({ method: 'post', url: '/qStock/AjaxPage', dataType: "json&quo ...

  5. zabbix监控mysql主从同步和延迟

    https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...

  6. MVCC原理 4步 什么是MVCC、事务ACID、事物隔离级别、Innodb存储引擎是如何实现MVCC的

    MVCC是来处理并发的问题,提高并发的访问效率,读不阻塞写.事物A 原子性C 一致性I 隔离性D 持久性高并发的场景下的问题脏读不可重复读幻读事物隔离级别RU读未提交 脏读/不可重复读/幻读 .不适用 ...

  7. 【AtCoder】ARC063

    ARC063 C - 一次元リバーシ / 1D Reversi 不同的颜色段数-1 #include <bits/stdc++.h> #define fi first #define se ...

  8. kafka安装、相关命令以及PHP使用

    1.安装JAVA #下载安装包 https://www.oracle.com/technetwork/java/javase/downloads/index.html tar -xzvf jdk-8u ...

  9. Windows一键设置环境变量(以设置java环境变量为例)

    右击以管理员方式运行 JDKSetting.bat   @echo off color 0a echo.------------------------------------ echo.TODO:设 ...

  10. [javascript]localStorage和sessionStorage区别

    一.sessionStorage.localStorage.cookie可查看的位置,F12=>Application: 二.cookie .sessionStorage与localStorag ...