题意:给你n个集合,如果两个集合有公共元素,那么就可以合并,问你最小合并几次可以得到一个集合包含1和m。

思路:非常经典的套路建图,就是将集合和集合中的元素为两端,来建图。集合中的元素到集合的边权为1,集合到集合中的元素边权为0,然后跑1到m的最短路即可。

/*keep on going and never give up*/
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
#define int long long
typedef pair<int, int> pii;
#define lowbit(x) x&(-x)
#define endl '\n'
#define wk is zqx ta die
vector<pii> pl[400005];
int dis[400005];
int vis[400005];
signed main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m;cin >> n >> m;for (int i = 1; i <= n + m; i++) {dis[i] = 1e18;}for (int i = 1; i <= n; i++) {int a;cin >> a;for (int j = 1; j <= a; j++) {int x;cin >> x;pl[m + i].push_back({x, 0});pl[x].push_back({m + i, 1});}}priority_queue<pii, vector<pii>, greater<pii>> p;p.push({0, 1});dis[1] = 0;while (!p.empty()) {pii x = p.top();p.pop();if (vis[x.second]) {continue;}vis[x.second] = 1;for (auto q : pl[x.second]) {if (dis[q.first] > dis[x.second] + q.second) {dis[q.first] = dis[x.second] + q.second;p.push({dis[q.first], q.first});}}}if (dis[m] == 1e18) {dis[m] = 0;}cout << dis[m] - 1 << endl;return 0;
}

abc302 F 思维建图+dij相关推荐

  1. 男生和女生(思维建图,最大独立集问题)

    男生和女生(思维建图,最大独立集问题) 问题描述 在大学二年级,一些人开始了同学之间罗曼蒂克关系的研究.有"罗曼蒂克"关系是针对男生和女生之间的关系而言的.研究的原因是找到满足以下 ...

  2. CodeForces - 1529F It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!(最短路+思维建图)

    题目链接:点击查看 题目大意:给出 nnn 个点(从 000 开始编号)和 mmm 条边的有向带权图,不过 mmm 条边是动态的,经过 ttt 秒后,第 iii 条边就从 ai−>bi,cia_ ...

  3. CodeForces - 1422D Returning Home(最短路+思维建图)

    题目链接:点击查看 题目大意:给出一个 n * n 的二维平面,现在要从点 ( sx , sy ) 到达点 ( fx , fy ),在平面上有 m 个传送门,共有两次操作: 向上.下.左.右移动一个单 ...

  4. ZZULIOJ 2131 Can Win【思维建图+最大流】

    2131: Can Win Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 479  Solved: 61 SubmitStatusWeb Board ...

  5. 2016 计蒜之道 复赛 菜鸟物流的运输网络【拆点+思维建图+网络流】

    菜鸟物流的运输网络 菜鸟物流有自己的运输网络,网络中包含 nn 个城市物流集散中心,和 mm 对城市之间的运输线路(线路是双向的).菜鸟物流允许淘宝卖家自行确定包裹的运输路径,但只有一条限制规则:不允 ...

  6. HDU 4725 层级最短路 思维建图 邻接表 堆优化迪杰斯特拉 真的难想 区域网络赛真题

    题目 题解思路 知道是最短路,怎么建图呢? 一开始想到每层来一个超级源点,但是方向不知道怎么确定,用双向边果然WA了(如果是双向边,那一层的都会变成0费连通了 ). 翻了翻 大佬的博客 大佬定义了一种 ...

  7. POJ - 1847 Tram 最短路,思维建图

    题目链接 POJ-1847 题意 给定n节点,节点之间有道路相连,但是每个节点都有个开关,只有开关指向的节点才能通行,你可以搬动开关.给定起点终点,求最少搬动开关次数. 解法 建图,对于每个节点,初始 ...

  8. 洛谷 - P1989 无向图三元环计数(思维建图)

    题目链接:点击查看 题目大意:给出一个 nnn 个点 mmm 条边组成的无向图,求三元环的个数 题目分析:对于原图建新图,对于原来的每条边来说 如果度数不同,度数小的点指向度数大的点 如果度数相同,编 ...

  9. 【POJ - 1486】Sorting Slides(思维建图,二分图求必须边,关建边,图论)

    题干: Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he is not a ...

最新文章

  1. hdu 1561 The more, The Better_树状dp
  2. python自定义包或模块在Linux服务器导入错误的解决办法
  3. codeup:问题 D: 最短路径
  4. 十年难得一遇!从数据误删到全量恢复的惊险记录
  5. android MVP 模式内存泄漏如何解决
  6. 查看windows 端口进程
  7. 删除vs中最近的项目的方法
  8. 执行超时已过期。完成操作之前已超时或服务器未响应。_OMG! 云服务器 CPU 100%了!肿么办?...
  9. 百度AI智能小程序正式开放申请
  10. 转载:bug的处理流程
  11. [Linux] C 语言遍历文件夹
  12. 机房(厂房)温度环境监控系统
  13. 【BZOJ5338】[TJOI2018]异或(主席树)
  14. 大学课程很少有教怎么设计单片机开发板,进阶板更不用说
  15. 使用Palette来对图片进行颜色提取
  16. 【hihocoder 1032】最长回文子串
  17. java多线程编程synchronized关键字
  18. java通讯录管理系统答辩_java版通讯录管理系统
  19. 火狐firebug和firepath插件安装
  20. eclipse 如何查看Java源码

热门文章

  1. 皮尔斯晶体振荡器晶体管接入系数及谐振频率详细推导过程
  2. 《C程序设计语言》学习笔记(01)起步
  3. yii2里的hasOne怎么搞?
  4. 计算机桌面隔几秒闪一下,为什么我的电脑桌面总是隔几分钟就自动刷新一下
  5. css可继承的属性有哪些?
  6. 安卓模拟器Genymotion黑屏
  7. 域控制器设置计算机密码,教你轻松设置Win 2003域控制器密码
  8. [英国访问学者]如何获取邀请函
  9. 彬月论坛(开源)-asp.net
  10. visual studio 2005 没有注册类别