| ||||||||||
| 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 | |||||||||
发现一个很奇怪的问题,请大家帮忙看看#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
#define N 1100
#define INF 0xfffffff
struct Edge
{
int v,d,next;
}edge[4100];
int first[N],n,edi,dis[N];
int qur[N],sign[N];
void spfa(int s)
{
int i,j,u,v;
int h,e,r;
dis[1]=0;
for(i=2;i<=n;i++)
dis[i]=INF;
h=r=0;
memset(sign,0,sizeof(sign));
qur[h]=s;
sign[s]=1;
while(h<=r)
{
int u=qur[h++];
sign[u]=0;
for(e=first[u];e;e=edge[e].next)
{
v=edge[e].v;
if(dis[u]+edge[e].d<dis[v])
{
dis[v]=dis[u]+edge[e].d;
if(sign[v]==0)
{
sign[v]=1;
qur[++r]=v;
}
}
}
}
return;
}
int main()
{
int i,j;
int t;
while(scanf("%d%d",&t,&n)!=EOF)
{
edi=2;
memset(first,0,sizeof(first));
while(t--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
edge[edi].v=b,edge[edi].d=c;
edge[edi].next=first[a];
first[a]=edi;
edi++;
edge[edi].v=a,edge[edi].d=c;
edge[edi].next=first[b];
first[b]=edi;
edi++;
}
spfa(1);
printf("%d\n",dis[n]);
}
}
此代码正确,但是当将sign[N]数组的名字改为visit[N]就出现wa
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator