40pts WA 求助
查看原帖
40pts WA 求助
569235
w9095楼主2022/11/29 15:41
#include <bits/stdc++.h>
#define MAX 6000000
#define INF 2147483647
using namespace std;
struct edge
{
 long long next;
 long long to;
 long long dis;
}e[MAX];
long long cnt[MAX],dis[MAX],visit[MAX],head[MAX],que[MAX*10],hp=0,tp=0,nume=0,ans=0;
long long n,m,s,u,v,w;
void adde(long long from,long long to)
{
    e[++nume].next=head[from];
    e[nume].to=to;
    e[nume].dis=1;
    head[from]=nume;
}

int main()
{
	scanf("%d%d",&n,&m);
	for(long long i=0;i<m;i++)
	    {
	    	scanf("%d%d",&u,&v);
	    	if(u!=v)adde(u,v);
	    	if(u!=v)adde(v,u); 
		}
	for(int i=1;i<=n;i++)
	    dis[i]=INF;
	dis[1]=0;visit[1]=1;
	que[++hp]=1;++tp;
	while(que[hp]!=0)
	     {
	     	int top=que[hp];
	     	que[hp]=0;visit[top]=0;
	     	for(int i=head[top];i!=0;i=e[i].next)
	     	     {
	     	      int to=e[i].to;
	     	      if(dis[top]+e[i].dis==dis[to])
	     	         ++cnt[to],cnt[to]%=100003;
	     	      if(dis[top]+e[i].dis<=dis[to])
	     	         {
	     	         if(dis[top]+e[i].dis<dis[to])cnt[to]=1;
	     	         dis[to]=dis[top]+e[i].dis;
	     	         if(!visit[i])
	     	            {
	     	            	que[++tp]=to;
	     	            	if(tp>MAX*10-2)tp=1;
	     	            	visit[i]=1;
						}
	     	         }
	     	     }
	     	hp++;
	     	if(hp>MAX*10-2)hp=1;
		 }
	printf("1\n");
	for(int i=2;i<=n;i++)
	    printf("%d\n",cnt[i]%100003);
	return 0;
}

找不到问题,或者给一组小的hack数据也行。

谢谢大佬们了

2022/11/29 15:41
加载中...