求助,本地AC,提交WA
  • 板块CF786B Legacy
  • 楼主yzh_Error404Error
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/2/19 19:02
  • 上次更新2023/10/28 08:08:51
查看原帖
求助,本地AC,提交WA
126871
yzh_Error404Error楼主2022/2/19 19:02

RT,本地和洛谷IDE均AC,但提交上去就全为-1

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=3e6+5;
int n,m,s;
int op;
int a[MAXN],cnt,head[MAXN],to[MAXN],nxt[MAXN],len[MAXN],dis[MAXN];
bitset<MAXN>vis;
priority_queue<pair<int,int> >q;
inline void add(int x,int y,int z)
{
    to[++cnt]=y;
	nxt[cnt]=head[x];
	head[x]=cnt;
	len[cnt]=z;
}
inline void build(int p,int l,int r)
{
    if(l==r)
	{
		a[l]=p;
		return;
	}
    int mid=(l+r)>>1;
    add(p,p<<1,0);
	add(p,p<<1|1,0);
    add((p<<1)+MAXN,p+MAXN,0);
	add((p<<1|1)+MAXN,p+MAXN,0);
    build(p<<1,l,mid);
    build(p<<1|1,mid+1,r); 
}
inline void change(int p,int l,int r,int a,int b,int x,int k)
{
    if(l>=a&&r<=b)
	{
        if(op==2)add(x+MAXN,p,k);
        else add(p+MAXN,x,k);
        return;
    }
    int mid=(l+r)>>1;
    if(a<=mid)change(p<<1,l,mid,a,b,x,k);
    if(b>mid)change(p<<1|1,mid+1,r,a,b,x,k);
} 
inline void dijkstra(int s)
{
    memset(dis,0x3f,sizeof(dis));
	dis[s]=0;
    q.push(make_pair(0,s));
    while(!q.empty())
	{
        int x=q.top().second;
		q.pop();
        if(vis[x])continue;
        vis[x]=1;
        for(register int i=head[x];i;i=nxt[i])
		{
            int y=to[i],z=len[i];
            if(dis[y]>dis[x]+z)
			{
				dis[y]=dis[x]+z;
				q.push(make_pair(-dis[y],y));
			}
        }
    }
}
signed main()
{
    scanf("%lld%lld%lld",&n,&m,&s);
	build(1,1,n);
    for(register int i=1;i<=n;i++)
    {
        add(a[i],a[i]+MAXN,0);
		add(a[i]+MAXN,a[i],0);
    }
    for(register int i=1;i<=m;i++)
	{
		int x,y,l,r,z,k;
        scanf("%lld",&op);
        if(op==1)
		{
			scanf("%lld%lld%lld",&x,&y,&k);
			add(a[x]+MAXN,a[y],k);
		}
        else
		{
            scanf("%lld%lld%lld%lld",&x,&l,&r,&k);
            change(1,1,n,l,r,a[x],k);
        }
    }
    dijkstra(a[s]+MAXN);
    for(register int i=1;i<=n;i++)
        printf("%lld ",dis[a[i]]!=0x3f3f3f3f3f3f3f3fll?dis[a[i]]:-1);
    return 0;
}
2022/2/19 19:02
加载中...