玄学问题
查看原帖
玄学问题
726870
Rainber楼主2024/3/30 10:09

我还没写完,但是请问样例为什么不给我输出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;
}
2024/3/30 10:09
加载中...