help求大牛看看代码哪里错了QAQ

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 10001
#define M 50001
#define Q 30001
#define Z 100001
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int x,next,w;
};
node data[M*2];
int g[N],d[N],v[N];
int tot,n,m,qu;

void addedge(int x,int y,int k)
{
tot++;
data[tot].x=y;
data[tot].w=k;
data[tot].next=g[x];
g[x]=tot;
}

void prim(int st)
{
for (int i=1;i<=n;i++) d[i]=-1;
d[st]=0;
memset(v,0,sizeof(v));
for (int time=1;time<=n-1;time++)
{
int maxn=-1,maxp;
for (int i=1;i<=n;i++)
{
if (d[i]>maxn)
{
maxn=d[i];
maxp=i;
}
}
v[maxp]=1;
for (int p=g[maxp];p!=-1;p=data[p].next)
{
if (maxp==st)
{
d[data[p].x]=data[p].w;
}
else if (v[data[p].x]==0 && d[data[p].x]<min(d[maxp],data[p].w))
{
d[data[p].x]=min(d[maxp],data[p].w);
}
}
}

}

int main()
{
freopen("vijos1843.in","r",stdin);
scanf("%d%d",&n,&m);
tot++;
memset(g,255,sizeof(g));
for (int i=1;i<=m;i++)
{
int x,y,k;
scanf("%d%d%d",&x,&y,&k);
addedge(x,y,k);
addedge(y,x,k);
}

scanf("%d",&qu);
for (int i=1;i<=qu;i++)
{
int st,et;
scanf("%d%d",&st,&et);
prim(st);
/*if (d[et]!=-1)*/ printf("%d\n",d[et]);
//else printf("-1\n");
}

return 0;
}

0 条评论

目前还没有评论...

信息

ID
1843
难度
7
分类
(无)
标签
递交数
5319
已通过
954
通过率
18%
被复制
10
上传者