| ||||||||||
| 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<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int T,N;
int x,y,z;
const int INF=0x3f3f3f3f;
int head[1005],next[2005],to[2005],weight[2005],queue[2010],dis[1005],tot;
bool exist[1005];
void add(int x,int y,int z)
{
next[++tot]=head[x];
to[tot]=y;
head[x]=tot;
weight[tot]=z;
}
void spfa(int s)
{
int left=0,right=0,u,v;
queue[++right]=s;
exist[s]=true;
dis[s]=0;
while(left!=right)
{
if(left>2010)
left=0;
u=queue[++left];
exist[u]=false;
for(int i=head[u];i;i=next[i])
{
v=to[i];
if(dis[v]>dis[u]+weight[i])
{
dis[v]=dis[u]+weight[i];
if(!exist[v])
{
exist[v]=true;
if(right>2010)
right=0;
queue[++right]=v;
}
}
}
}
}
int main()
{
memset(dis,INF,sizeof(dis));
while(scanf("%d %d",&T,&N)==2)
{
for(int i=1;i<=T;i++)
{
scanf("%d %d %d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
spfa(N);
cout<<dis[1];
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator