1. 程式人生 > >CODEVS 1332 上白澤慧音

CODEVS 1332 上白澤慧音

題目描述

  在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由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 5

1 2 1

1 3 2

2 4 2

5 1 2

3 5 1

樣例輸出

3

1 3 5

資料範圍及提示

對於60%的資料:N <= 200且M <= 10,000

對於100%的資料:N <= 5,000且M <= 50,000

分析

tarjan的裸題,但是要稍微記錄一下當前強聯通分量是由哪些組成的,而且有多長,其實在做的時候染一下色就好了。

程式碼

#include <bits/stdc++.h>

#define N 5010

using namespace std;

stack <int> S;
vector <int> E[N];

int dfn[N],low[N];
int belone[N],num[N];
int cnt = 0;
int tot = 0;
int ans = 0;
int n,m;
bool vis[N];

void tarjan(int
x) { low[x] = dfn[x] = cnt++; S.push(x); vis[x] = true; for (int i = 0; i < E[x].size(); i++) { int v = E[x][i]; if (!dfn[v]) { tarjan(v); low[x] = min(low[x],low[v]); } else if(vis[v]) low[x] = min(low[x],dfn[v]); } if (dfn[x] == low[x]) { belone[x] = ++cnt; num[cnt]++; while (true) { int now = S.top(); S.pop(); vis[now] = false; num[cnt]++; belone[now] = cnt; if(now == x) break; } } } int main() { scanf("%d%d",&n,&m); for (int i = 1; i <= m; i++) { int k,x,y; scanf("%d%d%d",&x,&y,&k); E[x].push_back(y); if (k == 2) E[y].push_back(x); } for (int i = 1; i <= n; i++) if (!dfn[i]) tarjan(i); int s; for (int i = 1; i <= n; i++) if (num[belone[i]] > ans) { ans = num[belone[i]]; s = i; } printf("%d\n",ans-1); for (int i = 1; i <= n; i++) { if (belone[i] == belone[s]) printf("%d ",i); } printf("\n"); }

相關推薦

codevs-1332

題意不用多說,有向圖,求強聯通分量。找到強連通分量中定點最多的分量,並輸出該最大分量中包含的頂點。 是一道求強連通分量的模板題,用的是Kosaraju演算法。 Kosaraju演算法步驟: 1.先根據題意建原圖與原圖的反圖 2.根據原圖進行第一次DFS,(DFS1)得到一個ord[]

CODEVS 1332

題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由N個村莊(編號為1..N)和M條道路組成,道路分為

P1726

不能 我們 題目 編號 int bsp als 新的 min 洛谷—— P1726 上白澤慧音 題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裏的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定

luogu P1726

tar %d 聯通 register tps reg code col list 二次聯通門 : luogu P1726 上白澤慧音 /* luogu P1726 上白澤慧音 Tarjan求強連通分量 輸出最大

洛谷 P1726

getchar std .org pre 字典 雙向 標記 編號 read 題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裏的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。

[洛谷1726]

cto 連通 print max logs 所有 stack != class 思路:Tarjan求出所有的連通分量,然後$O(n)$計算每個連通分量的大小,再$O(n)$找出字典序最小的。 1 #include<stack> 2 #include&

——原來Tarjan 適用混合圖,原來String 排字典序的確坑(或者說我的腦袋太水?)

show sort 所有 open logs true 的確 back 字典序   模板強連通分量,強連通Tarjan 可以直接過,只是題目多了需要字典序比較並輸出的需要。然而我偷懶想用String 儲存所有計算出的強連通分量,然後sort 一遍輸出,結果是提交了三次都是錯

【luogu P1726 】 題解

uri sizeof stream names ostream www ref while bool 題目鏈接:https://www.luogu.org/problemnew/show/P1726 菜 #include <stack> #include <

www. n) lin -i emc operator 字典序 標記 opera 上白澤慧音 題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裏的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作

洛谷1726

原題連結 裸的\(tarjan\)找強連通分量,記錄最大強連通分量即可,注意字典序。 #include<cstdio> using namespace std; const int N = 5010; const int M = 1e5 + 10; int fi[N], di[M], ne[M

洛谷 P1726 題解

一、題目: 洛谷原題 二、思路: 閒扯句廢話,從今開始我要刷洛谷試煉場了! 那麼言歸正傳,這道題明顯是個有向圖的tarjan好嘛。注意按照字典序輸出,其他也沒什麼。 三、程式碼: //自認為很優美的程式

P1726 (強連通分量)

題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由N個村莊(編號為1..N)和M條道路組成,道路分為兩種一種為單向通行的,一種為雙向通行的,

(圖論/強聯通分量)

https://www.luogu.org/problemnew/show/P1726 人間之裡由N個村莊(編號為1…N)和M條道路組成,道路分為兩種一種為單向通行的,一種為雙向通行的,分別用1和2來標記。如果存在由村莊A到達村莊B的通路,那麼我們認為可以從村莊

C++ P1726

學習了強聯通分量(scc),找了個裸題,用tarjan演算法AC了,Dalao勿噴啊! -_-|| # include <iostream> # include <cstring&

洛谷Oj-P1726 -強連通分量

問題描述: 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由N個村莊(編號為1..N)和M條道路組成,道路分為兩

P1726 tarjan 模板

spa truct nbsp ems new iter char with set P1726 上白澤慧音 這是一道用tarjan做的模板,要求找到有向圖中最大的聯通塊。 #include <algorithm> #include <ite

(tarjan求強連通分量)

題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由 N 個村莊(編號為 1..N)和 M 條道路組成,道

模擬賽

題目描述 在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之裡的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換一個能夠聚集最多人數的村莊作為新的教學地點。人間之裡由 N 個村莊(編號為 1..N)和 M 條道路組成,道路分為兩種一種

百度編輯器傳視頻頻的bug

AR script 文件的 本地 tps 開源 lis 語言 lin 前言:UEditor是由百度web前端研發部開發所見即所得富文本web編輯器,具有輕量,可定制,註重用戶體驗等特點,開源基於MIT協議,允許自由使用和修改代碼,百度Ueditor 支持多種後臺語言上傳使用

用Grafana5.1 給zabbix 3.4.9 披富美的外衣

Grafana zabbix 閑聊:zabbix 的UI 做的中規中矩,逼格不是很高,所以我們可以結合Grafana 的炫酷界面來補充zabbix 這方面的不足,當然這個不是最重要的,老子在《道德經》裏邊就講過“是以聖人之治也,為腹不為目。”我們雖然不是聖人,但是也知道這個道理的,首先Grafana