【NOIP2018 提高组 day2 T1】旅行

题目

https://www.luogu.org/problemnew/show/P5021

思路

这道题60%的数据还是容易做; 这要建图的时候预处理一下,如何深搜就行了; 因为两点之间有且只有一条路径联通; 因此选择了了一条边,就必须把这棵子树走完; 所以我们每次都选择节点最小的那子树; 贪心就完事;

考虑100%,发现n<=5000可以n2过,所以我们暴力删掉环上的一条边,在按60%跑一边即可

代码比想象中长。。。

代码

#include
#include
#include
#include
using namespace std;
int n,m,u,v;
struct node{
    int next;
    int to;
}e[10005];
int len,list[5005];
bool bol[5005];
int ans[5005],tot;
int esave[5005],ecir[5005][5005];

bool cmp(const node &a,const node &b){
    return a.next==b.next?a.toans[tot]&&!sw){
        co=1;
        return;
    }
    if(p

你可能感兴趣的:(题解,dfs)