/ Vijos / 讨论 / 小岛 /

为什么会runtime?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define inf 99999999
int m,n;
int dis[1004],a[1004][1004],b[80],book[1004],s[50000];
void athletic(int x,int y)
{
int k,l,v,min;
for(k=1;k<=n;k++)
{
book[k]=0;
dis[k]=a[k][y];
}
for(k=1;k<=n-1;k++)
{
min=inf;
for(l=1;l<=n;l++)
{
if(dis[l]<min && book[l]==0)
{
min=dis[l];
v=l;
}
}
book[v]=1;
for(l=1;l<=n;l++)
{
if(a[l][v]<inf)
{
if(dis[l]>dis[v]+a[v][l])
dis[l]=dis[v]+a[v][l];
}
}
}
return ;
}
int main()
{
scanf("%d%d",&n,&m);
int i,j,p=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
a[i][j]=inf;
}
}
for(i=1;i<=m;i++)
{
scanf("%d",&b[1]);
if(b[1]==0)
{ p++;
scanf("%d %d",&b[2],&b[3]);
athletic(b[2],b[3]);
s[p]=dis[b[2]];
}
if(b[1]==1)
{
scanf("%d %d %d",&b[2],&b[3],&b[4]);
if(a[b[2]][b[3]]>b[4])
{
a[b[2]][b[3]]=b[4];
a[b[3]][b[2]]=b[4];
}
}
}
for(i=1;i<=p;i++)
{
if(s[i]<inf) printf("%d\n",s[i]);
else printf("-1\n");
}
return 0;
}

1 条评论

  • 1

信息

ID
1942
难度
6
分类
(无)
标签
递交数
690
已通过
188
通过率
27%
被复制
2
上传者