zoukankan      html  css  js  c++  java
  • Time to live

    http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=24028

    其实bfs 和dfs 两个的原理是一样的,都是找到最深的,不过都需要两遍

    第一次找到深度最深的,第二次以深度最深的 再找最深的

    View Code
    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #define inf ~0U>>1
    #define maxn 100000
    using namespace std;
    int n;
    vector<int>node[maxn];
    pair<int,int>ans;
    int visit[maxn];
    void init()
    {
        int a,b;
        for(int i=0;i<n;i++)
            node[i].clear();
        for(int i=1;i<n;i++)
        {
            cin>>a>>b;
            node[a].push_back(b);
            node[b].push_back(a);
        }
    }
    void bfs(int root)
    {
        queue<pair<int,int> >q;//带有两个属性的队列
        q.push(make_pair(root,0));//首先根入队
        ans.second=0;
        memset(visit,0,sizeof(visit));
        visit[root]=1;
        while(!q.empty())
        {
            pair<int,int>temp=q.front();
            q.pop();
            if(temp.second>ans.second)
            {
                ans.second=temp.second;
                ans.first=temp.first;
            }
            for(int i=0;i<node[temp.first].size();i++)
            if(!visit[node[temp.first][i]])//没有访问入队
            {
                visit[node[temp.first][i]]=1;
                q.push(make_pair(node[temp.first][i],temp.second+1));
            }
        }
    }
    
    int main()
    {
        int test;
        for(cin>>test;test;test--)
        {
            cin>>n;
            init();
            bfs(0);//两次bfs,第一次假设0为根,寻找深度最深的点
            bfs(ans.first);
    //第二次,以深度最深的点位根,在寻找深度最深的点
            if(ans.second%2)
                cout<<ans.second/2+1<<endl;//偶数答案一半加1
            else
                cout<<ans.second/2<<endl;//奇数答案一半
        }
        return 0;
    }
  • 相关阅读:
    java泛型介绍
    JavaWeb---总结(十九)Session机制
    ServiceWorker入门介绍一
    Ehcache入门介绍一
    Hadoop入门介绍一
    给安卓端调用的短信发送接口demo
    Java开发需要注意的流程
    一些题
    省选模拟3
    省选模拟2
  • 原文地址:https://www.cnblogs.com/cs1003/p/2664791.html
Copyright © 2011-2022 走看看