hihoCoder 1224 : 赛车

链接:http://hihocoder.com/problemset/problem/1224

//深搜一遍求最大深度,从最大深度的叶子回溯到根的所经过的每个顶点在深搜求最大深度

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <queue>
#include <string.h>
#include <algorithm>
using namespace std;
const int maxn=100000+10;

struct Node
{
    int v,next;
}Edge[maxn];

struct node
{
    int start,step;
}p[maxn];
int head[maxn],vis[maxn],length[maxn],pre[maxn],temp,ldeepv;

void add(int u,int v,int index)
{
    Edge[index].v=v;
    Edge[index].next=head[u];
    head[u]=index;
}

void dfs(int v,int length)  //求最大深度
{
    if(temp<length)
    {
        temp=length;
        ldeepv=v;
    }
    if(vis[v]) return;
    vis[v]=1;
    for(int i=head[v];i!=-1;i=Edge[i].next)
    {
        if(!vis[Edge[i].v])
            dfs(Edge[i].v,length+1);
    }
}

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int a,b,cnt=0;
        memset(head,-1,sizeof(head));
        memset(length,0,sizeof(length));
        memset(pre,0,sizeof(pre));
        for(int i=1;i<n;i++)
        {
            scanf("%d%d",&a,&b);
            add(a,b,i);
            pre[b]=a;
        }
        ldeepv=temp=0;
        dfs(1,0);
        length[cnt++]=temp;  //存入length
       // printf("%d\n",temp);
        int k=ldeepv;
        memset(vis,0,sizeof(vis));
        while(pre[k]!=0) //回溯
        {
            vis[k]=1;
            k=pre[k];
            temp=0;
            dfs(k,0);
            length[cnt++]=temp;
        }
        sort(length,length+cnt);
        printf("%d\n",length[cnt-1]+length[cnt-2]);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 04:08:07

hihoCoder 1224 : 赛车的相关文章

hihocoder #1224 : 赛车 dfs

#1224 : 赛车 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1224 Description 幻想乡有一个赛车场.赛车场里有N个地点.同时地点之间还有单向的道路存在. 这些道路使得赛车场形成了一个外向树的结构.也就是说,道路将这N个地点连成了一个有根树.并且所有的边都是从父亲指向孩子的. 由于幽香喜欢刺激,每次她去赛车场都会从根节点出发,选择最长的一条路径来玩. 但是

hihoCoder挑战赛14-1224 赛车

题目链接 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 幻想乡有一个赛车场.赛车场里有N个地点.同时地点之间还有单向的道路存在. 这些道路使得赛车场形成了一个外向树的结构.也就是说,道路将这N个地点连成了一个有根树.并且所有的边都是从父亲指向孩子的. 由于幽香喜欢刺激,每次她去赛车场都会从根节点出发,选择最长的一条路径来玩. 但是现在幽香感觉最长的路径还是太短了,她打算在赛车场里新建一条道路使得新的最长路径最长. 同时,如果道路形成了一个环,那么可能会出现交通事故

hihoCoder挑战赛14,题目2 : 赛车

题目2 : 赛车 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 幻想乡有一个赛车场.赛车场里有N个地点.同时地点之间还有单向的道路存在. 这些道路使得赛车场形成了一个外向树的结构.也就是说,道路将这N个地点连成了一个有根树.并且所有的边都是从父亲指向孩子的. 由于幽香喜欢刺激,每次她去赛车场都会从根节点出发,选择最长的一条路径来玩. 但是现在幽香感觉最长的路径还是太短了,她打算在赛车场里新建一条道路使得新的最长路径最长. 同时,如果道路形成了一个环,那么可能会出现

hihoCoder挑战赛14 题目2 : 赛车 树的性质

题目2 : 赛车 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 幻想乡有一个赛车场.赛车场里有N个地点.同时地点之间还有单向的道路存在. 这些道路使得赛车场形成了一个外向树的结构.也就是说,道路将这N个地点连成了一个有根树.并且所有的边都是从父亲指向孩子的. 由于幽香喜欢刺激,每次她去赛车场都会从根节点出发,选择最长的一条路径来玩. 但是现在幽香感觉最长的路径还是太短了,她打算在赛车场里新建一条道路使得新的最长路径最长. 同时,如果道路形成了一个环,那么可能会出现

DFS(深度) hihoCoder挑战赛14 B 赛车

题目传送门 题意:中文题面 分析:放官方题解,就是从1为根节点深搜记录节点的深度,选出最大的深度的点,将该到达该点的节点都vis掉,然后再重新计算没有vis的点的深度,找最大的相加就是答案.放张图好理解: 收获:计算树的节点的深度 代码: /************************************************ * Author :Running_Time * Created Time :2015-8-31 14:03:09 * File Name :B.cpp ***

[hihoCoder#1381]Little Y&#39;s Tree

[hihoCoder#1381]Little Y's Tree 试题描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块.小J想知道每个连通块中最远点对距离的和. 这里的询问是互相独立的,即每次都是在小Y的原树上进行操作. 输入 第一行一个整数n,接下来n-1行每行三个整数u,v,w,其中第i行表示第i条边边权为wi,连接了ui,vi两点. 接下来一行一个整数q,表示有q组询问. 对于每组询问,第一行一个正整数k,接下来一

hihoCoder 1175:拓扑排序二

题目链接: http://hihocoder.com/problemset/problem/1175 题目难度:一星级(简单题) 今天闲来无事,决定刷一道水题.结果发现这道水题居然把我卡了将近一个钟头. 最后终于调通了.总结起来,原因只有一个:不够仔细. 思路不用细说了,就是拓扑排序的简单应用.然而,一些不起眼的细节才是让你掉坑里的真正原因. 猜猜哪儿可能出bug? // A simple problem, but you can't be too careful with it. #inclu

unity3d 赛车游戏——复位点检测

一直没有时间写博客 昨天我的CarWaypoints插件也告一段落了 今年没回家,过年就我一个人 挺无聊的,那就休息一天写几篇博客吧 我的代码可能很少,但是思路很重要 希望不懂的朋友别只copy代码 赛车游戏的话赛车难免会冲出跑道.掉入水坑.卡在障碍物上....等情况 那么问题来了,遇到这些情况怎么办呢? 玩家玩得好好的,难道就因为遇到这些情况要退出游戏重新进入吗? 那当然是不现实的,要是我的话果断卸载游戏 还要骂一句做游戏的人是脑残啊 我想你不希望玩家骂你是脑残吧,哈哈哈 新技能,赶快GET起

hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x值是多少.这里还要再辅助一个val[k]表示处理到当前情况只错了k次的最小值是多少因为改变的不止是和弦还有初始值,可以看一下代码理解一下. #include <iostream> #include <cstring> #include <cstdio> #include &