我还没写完,但是请问样例为什么不给我输出Here(先忽略dmin)
#include<stdio.h>
struct graph
{
int next[1000000];
int to[1000000];
int head[100000];
int m;
} g,fg;
int w[100000];
int n,m;
int mxl[100000],mnl[100000];
int queue[1000000];
void dmin()
{
int head=-1,tail=0,i;
for(i=0;i<n;++i)
{
mnl[i]=1e9;
}
mnl[0]=w[0];
queue[0]=0;
while(head<tail)
{
head++;
printf("%d ",queue[head]);
for(i=g.head[queue[head]];i!=-1;i=g.next[head])
{
if(mnl[g.to[i]]==1e9)
{
mnl[g.to[i]]=w[g.to[i]];
}
if(mnl[g.to[i]]>mnl[queue[head]])
{
mnl[g.to[i]]=mnl[queue[head]];
queue[++tail]=g.to[i];
}
}
}
}
int main()
{
int i,mx=0,r,t,s;
scanf("%d%d",&n,&m);
for(i=0;i<n;++i)
{
scanf("%d",w+i);
}
for(i=0;i<m;++i)
{
scanf("%d%d%d",&r,&t,&s);
r--;
t--;
g.next[g.m]=g.head[r];
g.to[g.m]=t;
g.head[r]=g.m;
g.m++;
fg.next[fg.m]=fg.head[t];
fg.to[fg.m]=r;
fg.head[t]=g.m;
fg.m++;
if(s==2)
{
g.next[g.m]=g.head[t];
g.to[g.m]=r;
g.head[t]=g.m;
g.m++;
fg.next[fg.m]=fg.head[r];
fg.to[fg.m]=t;
fg.head[r]=g.m;
fg.m++;
}
}
printf("Here");
dmin();
for(i=0;i<n;++i)
{
printf("%d ",mnl[i]);
}
return 0;
}