FZU 1227 [닭털 편지 문제]
대혁명 시기 에 지하 당 조직의 연락 도 는 나무 모양 의 구 조 였 다.모든 당원 은 그 보다 한 등급 높 은 책임자 와 만 단선 으로 연락 하지만 그 는 그 보다 한 등급 낮은 몇 명의 직접 부하 당원 과 연락 할 수 있다.긴급 상황 은 보통 닭털 편지 로 전달 된다.닭털 편 지 를 복사 하기 쉽다 고 가정 하지만 닭털 편 지 를 한 번 전달 하 는 데 는 1 단위 의 시간 이 필요 하 다.하나의 알고리즘 을 시험 적 으로 설계 하여 총 책임자 부터 닭털 편 지 를 모든 당원 에 게 전달 하 는 데 최소 얼마나 걸 리 는 지 계산한다.
주어진 지하 당 조직의 연락 도 에 대해 서 는 총 책임자 부터 닭털 편 지 를 모든 당원 에 게 전달 하 는 데 필요 한 최소 시간 을 계산한다.
Input
첫 번 째 줄 은 당원 총수 n (1 < n < 500001) 이다.전체 당원 번 호 는 0, 1,..., n - 1 이다.번호 가 0 인 당원 은 총 책임자 다.두 번 째 줄 부터 모두 n - 1 줄 이 있 고 줄 마다 2 개의 정수 u 와 v 가 있 으 며 당원 u 와 당원 v 간 의 단선 관 계 를 나타 낸다.
파일 끝까지 처리 하 다.
Output
모든 당원 에 게 닭털 편 지 를 전달 하 는 데 필요 한 최소한 의 시간.
Sample Input
4
0 2
0 3
1 2
Sample Output
2
트 리 동적 계획.
공부 중 입 니 다.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
const int MAX=50010;
using namespace std;
typedef struct nn
{
int v;
struct nn*next;
} node;
node set[2*MAX],*top,*adj[MAX];
int n,res[MAX],tmp[MAX];
inline node*create(int k,node*p)
{
top->v=k;
top->next=p;
return top++;
}
bool input()
{
int i,a,b;
if(EOF==scanf("%d",&n))
{
return false;
}
memset(adj,0,n*sizeof(adj[0]));
for(i=0,top=set; i<n-1; i++)
{
scanf("%d%d",&a,&b);
adj[a]=create(b,adj[a]);
adj[b]=create(a,adj[b]);
}
return true;
}
void edge(int v,int father)
{
node*p,*pre;
if(adj[v]->v==father)
{
adj[v]=adj[v]->next;
}
else
{
for(pre=adj[v],p=adj[v]->next; p; p=p->next,pre=pre->next)
{
if(p->v==father)
{
pre->next=p->next;
break;
}
}
}
for(p=adj[v]; p; p=p->next)
{
edge(p->v,v);
}
}
void solve(int v)
{
node*p;
int b,i,j;
for(p=adj[v];p;p=p->next)
{
solve(p->v);
}
for(p=adj[v],b=0;p;p=p->next)
{
tmp[b++]=res[p->v];
}
sort(tmp,tmp+b);
for(res[v]=0,i=b-1;i>=0;--i)
{
res[v]=max(res[v],tmp[i]+b-i);
}
}
int main()
{
while(input())
{
edge(0,-1);
solve(0);
printf("%d
",res[0]);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.