• [HIHO1050]树中的最长路(树直径)


    题目链接:http://hihocoder.com/problemset/problem/1050

    整理个板子

      1     /*
      2     ━━━━━┒ギリギリ♂ eye!
      3     ┓┏┓┏┓┃キリキリ♂ mind!
      4     ┛┗┛┗┛┃\○/
      5     ┓┏┓┏┓┃ /
      6     ┛┗┛┗┛┃ノ)
      7     ┓┏┓┏┓┃
      8     ┛┗┛┗┛┃
      9     ┓┏┓┏┓┃
     10     ┛┗┛┗┛┃
     11     ┓┏┓┏┓┃
     12     ┛┗┛┗┛┃
     13     ┓┏┓┏┓┃
     14     ┃┃┃┃┃┃
     15     ┻┻┻┻┻┻
     16     */
     17     #include <algorithm>
     18     #include <iostream>
     19     #include <iomanip>
     20     #include <cstring>
     21     #include <climits>
     22     #include <complex>
     23     #include <fstream>
     24     #include <cassert>
     25     #include <cstdio>
     26     #include <bitset>
     27     #include <vector>
     28     #include <deque>
     29     #include <queue>
     30     #include <stack>
     31     #include <ctime>
     32     #include <set>
     33     #include <map>
     34     #include <cmath>
     35     using namespace std;
     36     #define fr first
     37     #define sc second
     38     #define cl clear
     39     #define BUG puts("here!!!")
     40     #define W(a) while(a--)
     41     #define pb(a) push_back(a)
     42     #define Rint(a) scanf("%d", &a)
     43     #define Rll(a) scanf("%I64d", &a)
     44     #define Rs(a) scanf("%s", a)
     45     #define Cin(a) cin >> a
     46     #define FRead() freopen("in", "r", stdin)
     47     #define FWrite() freopen("out", "w", stdout)
     48     #define Rep(i, len) for(int i = 0; i < (len); i++)
     49     #define For(i, a, len) for(int i = (a); i < (len); i++)
     50     #define Cls(a) memset((a), 0, sizeof(a))
     51     #define Clr(a, x) memset((a), (x), sizeof(a))
     52     #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
     53     #define lrt rt << 1
     54     #define rrt rt << 1 | 1
     55     #define pi 3.14159265359
     56     #define RT return
     57     #define lowbit(x) x & (-x)
     58     #define onecnt(x) __builtin_popcount(x)
     59     typedef long long LL;
     60     typedef long double LD;
     61     typedef unsigned long long ULL;
     62     typedef pair<int, int> pii;
     63     typedef pair<string, int> psi;
     64     typedef pair<LL, LL> pll;
     65     typedef map<string, int> msi;
     66     typedef vector<int> vi;
     67     typedef vector<LL> vl;
     68     typedef vector<vl> vvl;
     69     typedef vector<bool> vb;
     70 
     71     typedef struct Edge {
     72         int u, v, w;
     73         Edge() {}
     74         Edge(int uu, int vv, int ww) : u(uu), v(vv), w(ww) {}
     75     }Edge;
     76 
     77     const int maxn = 300030;
     78     int n;
     79     int ret;
     80     int length[maxn];
     81     bool vis[maxn];
     82     vector<Edge> edge[maxn];
     83 
     84     int bfs(int start) {
     85         Cls(vis); Cls(length);
     86         queue<int> q;
     87         q.push(start);
     88         vis[start] = 1;
     89         while(!q.empty()) {
     90             int u = q.front(); q.pop();
     91             Rep(i, edge[u].size()) {
     92                 int v = edge[u][i].v;
     93                 int w = edge[u][i].w;
     94                 if(vis[v]) continue;
     95                 vis[v] = 1;
     96                 length[v] = length[u] + w;
     97                 q.push(v);
     98             }
     99         }
    100         int aim = 0;
    101         For(i, 1, n) {
    102             if(length[aim] < length[i]) aim = i;
    103         }
    104         return aim;
    105     }
    106 
    107     int main() {
    108         // FRead();
    109         int u, v, w;
    110         while(~Rint(n)) {
    111             ret = 0x7f7f7f;
    112             Rep(i, n+1) edge[i].clear();
    113             Rep(i, n-1) {
    114                 Rint(u); Rint(v);
    115                 u--, v--, w = 1;
    116                 edge[u].push_back(Edge(u, v, w));
    117                 edge[v].push_back(Edge(v, u, w));
    118             }
    119             u = bfs(0);
    120             v = bfs(u);
    121             printf("%d
    ", length[v]);
    122         }    
    123         RT 0;
    124     }
  • 相关阅读:
    2019ICPC上海站
    “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛(2018)
    集合问题
    后缀数组
    141. 周期(KMP)
    求和(矩阵快速幂)
    大数(KMP)
    1270: [蓝桥杯2015决赛]完美正方形
    AC自动机
    8.26作业
  • 原文地址:https://www.cnblogs.com/kirai/p/5800620.html
Copyright © 2020-2023  润新知