| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么RE= =#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
const int N=10005;
const int M=20010;
struct Edge
{
int v,next,w;
} edge[M];
bool vis[N];
int head[N],dis[N];
int nd,n,i;
void init()
{
CLR(head,-1);
nd=n=0;
}
void bfs(int s)
{
CLR(vis,0),CLR(dis,0);
queue<int>q;
q.push(s);
vis[s]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
for(i=head[u]; i!=-1; i=edge[i].next)
{
int v=edge[i].v;
if(!vis[v])
{
vis[v]=1;
dis[v]=dis[u]+edge[i].w;
q.push(v);
}
}
}
}
void solve()
{
int ans,x,y;
ans=0; //x=s
bfs(1);
for(i=1; i<=n; ++i)
if(dis[i]>ans)
ans=dis[i],x=i;
ans=0;
bfs(x);
for(i=1; i<=n; ++i)
if(dis[i]>ans)
ans=dis[i],y=i;
printf("%d\n",ans);
}
int main()
{
int u,v,w;
init();
while(~scanf("%d%d%d",&u,&v,&w))
{
edge[nd].v=v,edge[nd].next=head[u],edge[nd].w=w,head[u]=nd++;
edge[nd].v=u,edge[nd].next=head[v],edge[nd].w=w,head[v]=nd++;
n=max(n,max(u,v));
}
solve();
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator