zoukankan      html  css  js  c++  java
  • BZOJ 1509 逃学的小孩

    找出直径s->t,路径一定是x->s->t或者x->t->s这样的形式。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxv 200050
    #define maxe 400050
    using namespace std;
    long long n,m,x,y,z,dis[maxv],mx[maxv][3],nume=1,g[maxv],pos[maxv][3],fath[maxv],root;
    long long ans;
    struct edge
    {
        long long v,w,nxt;
    }e[maxe];
    void addedge(long long u,long long v,long long w)
    {
        e[++nume].v=v;e[nume].w=w;
        e[nume].nxt=g[u];g[u]=nume;
    }
    void dfs(long long x,long long father)
    {
        fath[x]=father;if (x==root) dis[x]=0;
        mx[x][1]=mx[x][2]=0;pos[x][1]=pos[x][2]=x;
        for (long long i=g[x];i;i=e[i].nxt)
        {
            long long v=e[i].v;
            if (v==father) continue;
            dis[v]=dis[x]+e[i].w;
            dfs(v,x);
            if (mx[v][1]+e[i].w>mx[x][1])
            {
                mx[x][2]=mx[x][1];pos[x][2]=pos[x][1];
                mx[x][1]=mx[v][1]+e[i].w;pos[x][1]=pos[v][1];
            }
            else if (mx[v][1]+e[i].w>mx[x][2]) 
            {
                mx[x][2]=mx[v][1]+e[i].w;
                pos[x][2]=pos[v][1];
            }
        }
    }
    int main()
    {
        scanf("%lld%lld",&n,&m);
        for (long long i=1;i<=m;i++)
        {
            scanf("%lld%lld%lld",&x,&y,&z);
            addedge(x,y,z);addedge(y,x,z);
        }
        root=1;dfs(root,0);
        root=pos[root][1];dfs(root,0);
        long long ret=pos[root][1];
        for (;;)
        {
            ans=max(ans,mx[ret][2]+dis[pos[root][1]]+min(mx[ret][1],dis[pos[root][1]]-mx[ret][1]));
            if (ret==root) break;
            ret=fath[ret];
        }
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    2022年第一天
    RestTemplate、 Ribbon、 OpenFeign 关系以及OpenFeign使用连接池
    linux下面编写简单的c++程序
    Rocket简介以及单机版安装
    事务源码(二)
    javaagent技术&Attach技术
    gateway网关原理
    Maven自定义插件以及使用
    AotucCrawler 快速爬取图片
    Monkey工具之fastbotiOS实践
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6574631.html
Copyright © 2011-2022 走看看