P5022 旅行 基環樹

2022-04-30 21:21:17 字數 1112 閱讀 2657

以後必須學會面向資料程式設計!看半天題目不知道咋寫直接爆搜,結果分少的可憐,還不如直接貪搞個60分。

觀察資料,發現圖至多存在乙個環

顯然,如果沒有環,這個題不跟你多bb,直接貪就完事了,線性複雜度。

原因十分顯然,一旦你還沒走到底就往回走的話,就走不完整張圖了。

有環的話,這題就是個基環樹。

根據題意,小y顯然是不能走完乙個環的,那就簡單了,直接刪邊開搞。

參考**

#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define n 5010

#define mod 2520

#define e 1e-12

using namespace std;

inline int read()

while(c>='0'&&c<='9')

return x*f;

}int n,m;

vectorg[n],ans,tmp;

int stack[n],top;

bool v[n],vis[n][n],flag;

inline void upd()

} tmp.clear();

}inline void dfs2(int x,int fa)

}inline void dfs1(int x,int fa)

for(int i=0;iprintf("%d ",ans[i]);

exit(0);

} else dfs1(y,x);top--; }}

int main()

for(int i=1;i<=n;++i) sort(g[i].begin(),g[i].end());

ans.push_back(inf);

dfs1(1,0);

if(!flag) dfs2(1,0);upd();

for(int i=0;iprintf("%d ",ans[i]);

return 0;

}

luogu題解 P5022 旅行

本人的 可以說洛谷最簡單的了 我的存圖方式有些與眾不同 a 5000 5000 中第乙個下標表示第幾個點,第二個表示與點相連的點 雖然比前向星廢記憶體但時間極快,大概是o n 的。現在步入正題 用深搜查找最小路徑很簡單 include include using namespace std int ...

洛谷 P5022 旅行

傳送門 給出乙個有n nn個點的圖,一共有m mm雙向邊,求如何走能使得走到的點按先後順序字典序最小 對於前60 60 60 的資料來說,直接暴力dfs dfsdf s即可而其他的點,則根據基環樹的性質,將每條邊列舉刪去,剩下的肯定是棵樹 進而就得到了類似於60 60 60 的資料的情況 inclu...

洛谷 P5022 旅行

day2就藍題起步不是要我命嗎 目測資料 不都是基環樹和樹嘛?基環樹我不會但是這個樹的貪心不是裸的嗎?大手一揮 這部分分我打定了!int outp 5100 len void dfs int x,int fa void main 光榮地水到了60分 對於剩下的分,我們來好好觀察一下題面 n 5000...