您的位置:首页 > 其它

POJ 2631 Roads in the North

2016-07-13 16:25 253 查看
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=10000+100;
int len,ans,cnt=0,p[maxn],son[maxn],head[maxn],vis[maxn],weigh[maxn][maxn];
struct node{
int u,v,next;
}node[2*maxn];
void add(int u,int v)
{
node[cnt].u=u;node[cnt].v=v;
node[cnt].next=head[u];
head[u]=cnt++;
node[cnt].u=v;node[cnt].v=u;
node[cnt].next=head[v];
head[v]=cnt++;
}
void dfs(int u)
{
vis[u]=1;
for(int i=head[u];i!=-1;i=node[i].next)
{
if(u==1) son[u]=0;
int v=node[i].v;
if(vis[v]) continue;
dfs(v);
son[u]=max(son[u],son[v]+weigh[u][v]);
if(u==1) p[len++]=son[1];
}
}
int main()
{
int u,v,w;
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
memset(son,0,sizeof(son));
while(scanf("%d%d%d",&u,&v,&w)!=EOF)
{
weigh[u][v]=w;
weigh[v][u]=w;
add(u,v);
}
ans=(1<<30);
dfs(1);
sort(p,p+len);
printf("%d",p[len-1]+p[len-2]);
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: