HDU4607+BFS

來源:互聯網
上載者:User

BFS求樹的直徑。

/*bfs+求樹的直徑關鍵:if k<=maxs+1 直接輸出k-1;else: k肯定的是包括最長路。先從最長路的起點出發,再走分支,最後到達最長路的終點。因此是2*(k-(maxs+1))+maxs;*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>#include<map>#include<math.h>using namespace std;typedef long long ll;//typedef __int64 int64;const int maxn = 100005;const int inf = 0x7fffffff;const double pi=acos(-1.0);const double eps = 1e-8;struct Node{int v,next;}edge[ maxn<<1 ];int cnt,head[ maxn ];int vis[ maxn ],dis[ maxn ];int maxs,maxNode;void init(){cnt = 0;memset( head,-1,sizeof( head ) );}void addedge( int a,int b ){edge[ cnt ].v = b;edge[ cnt ].next = head[ a ];head[ a ] = cnt++;edge[ cnt ].v = a;edge[ cnt ].next = head[ b ];head[ b ] = cnt++;}void bfs( int s,int n ){memset( vis,0,sizeof( vis ) );vis[ s ] = 1;queue<int>q;q.push( s );//for( int i=0;i<=n;i++ )//dis[ i ] = inf;dis[ s ] = 0;maxs = 0;while( !q.empty() ){int cur = q.front();q.pop();if( dis[ cur ]>maxs ){maxs = dis[ cur ];maxNode = cur;}//maxs = max( maxs,dis[ cur ] );for( int i=head[ cur ];i!=-1;i=edge[ i ].next ){int v = edge[ i ].v;if( vis[ v ]==1 ) continue;vis[ v ] = 1;dis[ v ] = dis[ cur ]+1;q.push( v );}}return ;}int main(){int T;scanf("%d",&T);while( T-- ){int n,m;scanf("%d%d",&n,&m);int a,b;init();int N = n-1;while( N-- ){scanf("%d%d",&a,&b);addedge( a,b );}bfs( 1,n );bfs( maxNode,n );//maxs=the R of the treewhile( m-- ){scanf("%d",&b);if( b<=maxs+1 ) printf("%d\n",b-1);else printf("%d\n",2*(b-maxs-1)+maxs);}}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.