歷屆試題 發現環

2021-10-03 13:37:47 字數 2202 閱讀 5710

資源限制

時間限制:1.0s 記憶體限制:256.0mb

$daily english

雖然世界充滿苦難,但是苦難總是可以戰勝的。

while the world is full of suffering,it is also full of overcoming it.

小明的實驗室有n臺電腦,編號1~n。原本這n臺電腦之間有n-1條資料鏈結相連,恰好構成乙個樹形網路。在樹形網路上,任意兩台電腦之間有唯一的路徑相連。

不過在最近一次維護網路時,管理員誤操作使得某兩台電腦之間增加了一條資料鏈結,於是網路**現了環路。環路上的電腦由於兩兩之間不再是只有一條路徑,使得這些電腦上的資料傳輸出現了bug。

為了恢復正常傳輸。小明需要找到所有在環路上的電腦,你能幫助他嗎?

第一行包含乙個整數n。

以下n行每行兩個整數a和b,表示a和b之間有一條資料鏈結相連。

對於30%的資料,1 <= n <= 1000

對於100%的資料, 1 <= n <= 100000, 1 <= a, b <= n

輸入保證合法。

按從小到大的順序輸出在環路上的電腦的編號,中間由乙個空格分隔。

5

1 23 1

2 42 5

5 3

樣例輸出

1 2 3 5
#include

#include

#include

#include

using namespace std;

const

int n =

1e5+5;

struct edge

edge[n<<1]

;int head[n]

,id;

bool vis[n]

;int pre[n]

;int s,e;

int k;

inline

void

add_edge

(int from,

int to)

void

init()

intmyfind

(int x)

intmyunion

(int x,

int y)

return1;

}void

dfs(

int u,

int cnt)

else

if(to == e && u != s)

//保證不會一開始就走終點,而是走一圈

cnt--

;return;}

}}intmain()

init()

; bool flag =0;

while

(n--

)add_edge

(x,y)

;add_edge

(y,x);}

vis[s]

= true;

vis[e]

= true;

pre[0]

= s;

dfs(s,0)

;return0;

}

#include

#include

#include

#include

using namespace std;

const

int n =

1e5+5;

int d[n]

;struct edge

edge[n<<1]

;int head[n]

,id;

void

init()

inline

void

add_edge

(int from,

int to)

void

topsort

(int n)

}while

(!q.

empty()

)}}for

(int i =

1; i <= n; i++)}

puts(""

);}int

main()

topsort

(n);

return0;

}

歷屆試題 發現環

題目鏈結 問題描述 小明的實驗室有n臺電腦,編號1 n。原本這n臺電腦之間有n 1條資料鏈結相連,恰好構成乙個樹形網路。在樹形網路上,任意兩台電腦之間有唯一的路徑相連。不過在最近一次維護網路時,管理員誤操作使得某兩台電腦之間增加了一條資料鏈結,於是網路 現了環路。環路上的電腦由於兩兩之間不再是只有一...

歷屆試題 發現環

問題描述 小明的實驗室有n臺電腦,編號1 n。原本這n臺電腦之間有n 1條資料鏈結相連,恰好構成乙個樹形網路。在樹形網路上,任意兩台電腦之間有唯一的路徑相連。不過在最近一次維護網路時,管理員誤操作使得某兩台電腦之間增加了一條資料鏈結,於是網路 現了環路。環路上的電腦由於兩兩之間不再是只有一條路徑,使...

試題 歷屆試題 發現環

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明的實驗室有n臺電腦,編號1 n。原本這n臺電腦之間有n 1條資料鏈結相連,恰好構成乙個樹形網路。在樹形網路上,任意兩台電腦之間有唯一的路徑相連。不過在最近一次維護網路時,管理員誤操作使得某兩台電腦之間增加了一條資料鏈結,於是網路...