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