洛谷P1726 上白泽慧音(强连通分量)
来源:互联网 发布:淘宝有的不能极速退款 编辑:程序博客网 时间:2024/06/06 07:28
洛谷P1726 上白泽慧音(强连通分量)
题目描述
在幻想乡,上白泽慧音是以知识渊博闻名的老师。春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄。因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点。人间之里由N个村庄(编号为1..N)和M条道路组成,道路分为两种一种为单向通行的,一种为双向通行的,分别用1和2来标记。如果存在由村庄A到达村庄B的通路,那么我们认为可以从村庄A到达村庄B,记为(A,B)。当(A,B)和(B,A)同时满足时,我们认为A,B是绝对连通的,记为<A,B>。绝对连通区域是指一个村庄的集合,在这个集合中任意两个村庄X,Y都满足<X,Y>。现在你的任务是,找出最大的绝对连通区域,并将这个绝对连通区域的村庄按编号依次输出。若存在两个最大的,输出字典序最小的,比如当存在1,3,4和2,5,6这两个最大连通区域时,输出的是1,3,4。输入输出格式
输入格式:
第1行:两个正整数N,M第2..M+1行:每行三个正整数a,b,t, t = 1表示存在从村庄a到b的单向道路,t = 2表示村庄a,b之间存在双向通行的道路。保证每条道路只出现一次。
输出格式:
第1行: 1个整数,表示最大的绝对连通区域包含的村庄个数。第2行:若干个整数,依次输出最大的绝对连通区域所包含的村庄编号。
输入输出样例
输入样例:
5 51 2 1
1 3 2
2 4 2
5 1 2
3 5 1
输出样例:
31 3 5
说明
对于60%的数据:N <= 200且M <= 10,000对于100%的数据:N <= 5,000且M <= 50,000
解题分析:
用Tarjan算法求强连通分量。
#include#include #include #include #include #include using namespace std;#define N 5005#define M 50005int n, m, tot = 0, head[N], vis[N] = {0}, ans = 0, cnt_r=0;int idx=0, dfn[N] = {0}, low[N] = {0}, stk[N], top=0;vector result[N];struct node{int to;int next;node():next(-1){}}e[M];void get_i(int &x){char ch = getchar();x = 0;while(!isdigit(ch)) ch = getchar();while(isdigit(ch)){x = x * 10 + ch - '0';ch = getchar();}}bool cmp(vector v1, vector v2){int i;if(v1.size()!=v2.size())return v1.size() > v2.size();else{for(i=0; i v2[i])return 0;}return 1;}void add_e(int from, int to){e[tot].to = to;e[tot].next = head[from];head[from] = tot++;}void tarjan(int k){int i, cnt, j;vis[k] = 1;dfn[k] = low[k] = ++idx;stk[top++] = k;for(i=head[k]; ~i; i=e[i].next){j = e[i].to;if(!vis[j]){tarjan(j);low[k] = min(low[k], low[j]);} else if(vis[j] == 1){low[k] = min(low[k], dfn[j]);} }int k1;cnt = 0;if(dfn[k] == low[k]){ // 得到一个强连通子图 do{top--;k1 = stk[top];vis[k1]=2;result[cnt_r].push_back(k1);cnt++;}while(low[k1] != dfn[k1]);cnt_r++;// 连通子图的个数加1 if(ans
阅读全文
0 0
- 洛谷P1726 上白泽慧音(强连通分量)
- 强连通分量 洛谷2818
- 强连通分量 (转)
- 强连通分量(桥)
- 强连通分量(kosaraju)
- 强连通分量(Tarjan)
- 强连通分量(模板)
- 强连通分量(方法)
- 上白泽慧音 题解 ---- tarjan求强连通分量
- 上白泽慧音(tarjan求强连通分量)
- 间谍网络 洛谷 1262 强连通分量
- 上白泽慧 洛谷1726 强连通分量
- 洛谷2661-tarjan-强连通分量
- poj 1236(tarjam)强连通分量
- poj-2553(强连通分量)
- 强连通分量SCC模版(LRJ)
- Strongly connected(hdu4635(强连通分量))
- 迷宫城堡(hdu1269,强连通分量)
- 设计模式
- TB 16 10 29 PM
- BP神经网络
- 论文投稿技巧有哪些
- Json编辑器
- 洛谷P1726 上白泽慧音(强连通分量)
- 操作纪录 | 上传代码到github
- 图像翻正以及原地(不开辟新空间)顺时旋转90度问题
- Kaggle 入门:探索泰坦尼克号事故幸存情况分析
- 图像识别前处理---学习(1)
- Ubuntu下MySQL简单操作
- NOIP 2006普及组 明明的随机数详解
- java序列化与反序列化(4)------jdk原生序列化机制实现深拷贝
- [LeetCode]17. Letter Combinations of a Phone Number
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
辉腾为什么那么贵
大众辉腾报价及图片
大众辉腾v6报价
大众辉腾12缸多少钱
大众辉腾2015款报价
大众辉腾昂图片
辉腾w12豪华版价格
大众12缸辉腾
辉腾的字母是什么
大众辉腾w12缸6.0报价
辉腾内饰图片
上海大众辉腾
辉腾报价及图片12缸
大众辉腾系列
辉腾怎么辨别
大众汽车辉腾
大众辉腾价格
大众辉腾v6价格
新款大众辉腾
辉腾v6多少钱
大众辉腾w12缸60报价
大众辉腾汽车图片
大众辉腾的标志
大众辉腾发动机配件
进口大众辉腾价格
大众辉腾国产
大众辉腾新车报价
大众辉腾图片w12
辉腾报价多少
大众辉腾配件
大众辉腾车报价
大众辉腾英文
全进口大众辉腾
大众辉腾v8价格
2015款大众辉腾
二手辉腾价格
大众辉腾图标
12缸辉腾多少钱
大众辉腾为什么这么贵
大众辉腾报价及图片t
辉腾车怎么样