| 记录编号 | 
        48874 | 
        评测结果 | 
        AAAAAAAAAA | 
    
    
        | 题目名称 | 
        1241.[NOIP 2010冲刺十三]逃离遗迹 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         怡红公子 | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.060 s  | 
    
    
        | 提交时间 | 
        2012-11-06 20:16:48 | 
        内存使用 | 
        4.21 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<fstream>
using namespace std;
ifstream fin("escapeb.in");
ofstream fout("escapeb.out");
int n,A,B,C;int a[20005]={0},b[20005]={0},c[20005]={0};
struct E{int u,v,w,next;}edg[40010];int edgs=0,head[20005];
void Addedg(int u,int v,int w){
     edgs++;
     edg[edgs].u=u;edg[edgs].v=v;edg[edgs].w=w;
     edg[edgs].next=head[u];
     head[u]=edgs;
     }
bool vis[20005]={0};
void Dfs(int last,int d[]){
     for(int i=head[last];i!=-1;i=edg[i].next)
     {
       int v=edg[i].v,w=edg[i].w;
       if(!vis[v])
       {
         vis[v]=1;
         d[v]=d[last]+w;
         Dfs(v,d);
                  }
             }
     }
int main()
{
    fin>>n>>A>>B>>C;
    
    memset(head,-1,sizeof(head));
    for(int i=1;i<n;++i)
    {
      int u,v,w;
      fin>>u>>v>>w;
      Addedg(u,v,w);
      Addedg(v,u,w);
            }
    
   // for(int i=1;i<=edgs;++i)
    //cout<<edg[i].u<<" "<<edg[i].v<<" "<<edg[i].w<<" "<<edg[i].next<<endl;cout<<endl; 
  //  for(int i=1;i<=n;++i) cout<<head[i]<<endl;
    memset(vis,0,sizeof(vis));vis[A]=1;
    Dfs(A,a);
    memset(vis,0,sizeof(vis));vis[B]=1;
    Dfs(B,b);
    memset(vis,0,sizeof(vis));vis[C]=1;
    Dfs(C,c);
    
  //  for(int i=1;i<=n;++i)
  //  cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl; 
    
    int k,ans=1000000000;
    for(int i=1;i<=n;++i)
    if(a[i]+b[i]+c[i]<ans)
    ans=a[i]+b[i]+c[i],k=i;
    
    fout<<k<<endl<<ans<<endl;
  //  system("pause");
    return 0;
    
    }