求助!100分玄关,最后一个点RE
查看原帖
求助!100分玄关,最后一个点RE
1263974
Are_this楼主2025/1/24 14:32
#include<bits/stdc++.h>
#define ll long long
#define PII pair<ll,ll>
using namespace std;
ll t,d[1000005],ans[1000006];
ll n,m,fl,x,y,z;
bool f[1000005];
struct ed
{
	ll nx;
	ll dnl;
	ll num;
}a[2000005];
ll hd[2000005],idz;
void in_ed(ll in,ll on,ll nu)
{
	idz++;
	a[idz].nx=hd[in];
	a[idz].dnl=on;
	a[idz].num=nu;
	hd[in]=idz;
}
void dijkstra(ll s)
{
	memset(f,0,sizeof(f));
    memset(d,0x3f3f3f3f,sizeof(d));
    d[s]=0;
    ans[s]=1;
    priority_queue<PII,vector<PII>,greater<PII> >heap;
    heap.push({0,1});
    while(heap.size())
    {
        PII k=heap.top();
        heap.pop();
        ll ver=k.second;
        ll distance=k.first;
        if(f[ver])continue;
        f[ver]=1;
        for(ll i=hd[ver];i!=0;i=a[i].nx)
        {
            ll j=a[i].dnl;
            if(d[j]==distance+a[i].num)
            {
            	ans[j]+=(ans[ver]%100003);
                ans[j]%=100003;
            }
            if(d[j]>distance+a[i].num)
            {
                d[j]=distance+a[i].num;
                ans[j]=ans[ver]%100003;
				heap.push({d[j],j});
			}
		}
	}
}
int main()
{
	freopen("P1144_6.in","r",stdin);
	freopen("P1144_6.txt","w",stdout);
	cin>>n>>m;
	for(ll i=1;i<=n;i++)
	{
		d[i]=INT_MAX;
	}
	for(ll i=1;i<=m;i++)
	{
		scanf("%lld%lld",&x,&y);
		z=1;
		in_ed(x,y,z);
		in_ed(y,x,z);
	}
	dijkstra(1);
	for(ll i=1;i<=n;i++)
	{
		printf("%lld\n",ans[i]);
	}
    return 0;
}

求教!!!

2025/1/24 14:32
加载中...