傳送門
給出乙個有n
nn個點的圖,一共有m
mm雙向邊,求如何走能使得走到的點按先後順序字典序最小
對於前60
%60\%
60%的資料來說,直接暴力dfs
dfsdf
s即可而其他的點,則根據基環樹的性質,將每條邊列舉刪去,剩下的肯定是棵樹
進而就得到了類似於60
%60\%
60%的資料的情況
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
inline ll read()
while
(s>=
'0'&&s<=
'9')
return d*f;
}int n=
read()
,m=read()
;struct nodet[
10010];
bool cmp
(node a,node b)
int ls[
10010
],cnt;
struct kinge[
10010];
int r[
5010];
void
add(
int x,
int y)
; ls[x]
=cnt++
; r[y]++;
return;}
int tf[
5010
],ac[
5010
],ans[
5010
],tttfff[
5010][
5010];
int l;
void
dfs(
int x)
return;}
queue<
int> q;
void
top()}
return;}
int b[
5010
],len;
void
check()
for(
int i=
1;i<=n;i++
) ans[i]
=ac[i]
;return;}
voidga(
int k)}}
while
(i>-1
);s[++len]
=s[1];
for(i=
1;i)return;}
intmain()
memset
(ans,
0x3f3f3f3f
,sizeof
(ans));
top();
for(
int i=
1;i<=n;i++)if
(r[i]
>1)
for(
int i=
1;i<=n;i++
)printf
("%d "
,ans[i]);
return0;
}
洛谷 P5022 旅行
day2就藍題起步不是要我命嗎 目測資料 不都是基環樹和樹嘛?基環樹我不會但是這個樹的貪心不是裸的嗎?大手一揮 這部分分我打定了!int outp 5100 len void dfs int x,int fa void main 光榮地水到了60分 對於剩下的分,我們來好好觀察一下題面 n 5000...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...
洛谷 P5022 旅行(DFS 斷環)
首先對於m n 1的情況非常好想 即這是一棵樹,然後從1節點開始,搜一遍。注意要搜出來的序列的字典序最小,所以用鄰接矩陣來儲存,存的時候按當前節點能到的節點的編號從小到大排序。當m n的時候 這時候便是乙個基環樹,在樹上的某乙個地方會有乙個環,會發現環上的有一條邊是不會走的。然而並不確定這條邊到底是...