hdu 4514 dfs判斷環 及 求樹的直徑

2021-06-24 11:10:35 字數 1155 閱讀 2679

題意:(略) 注意求的長度是指樹中最長的鏈,即樹的直徑   

注意這裡可能是不連通圖

先 dfs 判斷圖中是否有環,然後求樹的直徑,做法是 以任意一點u,為根節點,dfs找到最遠的點 start,再以該節點為根節點 dfs,找到的最遠的點,它們的距離就是解。

code:

#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define inf 0x3f3f3f3f

#define eps 1e-9

#define pa system("pause")

#define pi acos(-1.0)

using namespace std;

#define m 100005

int vis[m],head[m],dis[m];

struct edge

e[2000005];

int ecnt, n, st;

void addedge(int u, int v, int w)

void dfs1(int u) //從u 出發找最遠的點

}}int dfs(int u,int fa) // dfs判斷有沒有環

}return 0;

}bool check()

}return 0;

}int getdia(int u) //找樹的直徑

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

dis[i] = (i==st? 0:inf);

memset(vis, 0, sizeof(vis));

dfs1(st);

len = -1;

for(i = 1; i <= n; i++)

return len;

}int main()

memset(vis,0,sizeof(vis));

if(check())

puts("yes");

else

}printf("%d\n",ans);}}

return 0;

}

hdu 4514 並查集判環)

tencent昨天比賽的題目,昨天看的時候沒什麼思路,今天在網上搜了一下,說是可以用並查集做。果然,過了。看來還是做的題不夠多啊!思路 並查集判環,並把每次的邊權值都加到根結點的上去,最後求每個根結點權值的最大值就行了。orz 1 include2 include3 const int n 1000...

hdu1016 DFS 素數判斷

總是不好好審題。總結一下自己不看題容易犯的錯 1.漏掉某個重要條件。如此題的必須為1開頭,之前還有一道迷宮題也是。2.列印格式問題 3.可能是多個樣例輸入 在這點上栽了很多次了。4.不同答案的英文格式問題。此題是最簡單的dfs 素數判斷,素數直接照搬之前學習的乙個單個素數判斷方法,非常強悍 hdu1...

hdu1016 素數環剪枝dfs

題意 n 20範圍,搜乙個全排列,滿足素數環,相鄰兩個數字和為素數,最後一位和第一位之和也是素數。剪枝 每一位都先先判斷再搜尋。include include include include include include include include include include includ...