WA#5#8求助

P1462 通往奥格瑞玛的道路

Mine_King @ 2020-08-24 15:50:48

RT,数据在此,代码如下:

#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
long long hp,money[10005];
long long l,r,v[10005];
bool f[10005];
struct node
{
    long long first;
    int second;
    friend bool operator<(node x,node y){return x.first>y.first;}
};
priority_queue<node>q;
struct graph
{
    int tot;
    int hd[10005];
    int nxt[50005],to[50005];
    long long dt[50005];
    void add(int u,int v,long long w)
    {
        tot++;
        nxt[tot]=hd[u];
        hd[u]=tot;
        to[tot]=v;
        dt[tot]=w;
        return ;
    }
}g;
bool check(long long x)
{
    if(money[1]>x) return false;
    memset(f,0,sizeof(f));
    memset(v,0x3f,sizeof(v));
    q.push((node){0,1});
    v[1]=0;
    while(!q.empty())
    {
        int xx=q.top().second;
        q.pop();
        if(!f[xx])
        {
            f[xx]=true;
            for(int i=g.hd[xx];i;i=g.nxt[i])
                if(money[g.to[i]]<=x&&v[g.to[i]]>v[xx]+g.dt[i])
                {
                    v[g.to[i]]=v[xx]+g.dt[i];
                    q.push((node){v[g.to[i]],g.to[i]});
                }
        }
    }
    return v[n]<hp;
}
int main()
{
    scanf("%d%d%lld",&n,&m,&hp);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&money[i]);
        if(r<money[i]) r=money[i];
    }
    for(int i=1;i<=m;i++)
    {
        int u,v;
        long long w;
        scanf("%d%d%lld",&u,&v,&w);
        g.add(u,v,w);
    }
    while(l<r)
    {
        long long mid=(l+r)/2;
        printf("%lld %lld %lld\n",l,r,mid);
        if(check(mid)) r=mid;
        else l=mid+1;
    }
    if(check(r)) printf("%lld",r);
    else printf("AFK\n");
    return 0;
}

求大佬帮忙查错/kel,应该是dijkstra(check)挂了,但我照不出来/kk


by Lynkcat @ 2020-08-24 16:01:49

我怀疑是你二分答案写错了,check我貌似没看出来错误(为什么不写l小于等于r那种二分


by Lynkcat @ 2020-08-24 16:03:31

等等v等于hp的时候也是可以到达的吧……


by Water_Cows @ 2020-08-24 16:07:27

试过了,没用的。。。。


by Lynkcat @ 2020-08-24 16:14:32

@Water_Cows v等于hp试过了也没用吗


by Water_Cows @ 2020-08-24 16:15:04

你看看我的提交记录就知道了。。。。。。((


by Lynkcat @ 2020-08-24 16:15:34

而且这东西貌似是个无向图吧为什么只add了一次


by Mine_King @ 2020-08-24 16:17:54

@LYC_music 草我瞎了,谢谢LYC聚聚/qq


by Water_Cows @ 2020-08-24 16:19:52

....................... MK 可以了。。。。

@Mine_King 下次记得看题。。。。。


by Water_Cows @ 2020-08-24 16:20:36

突然发现我的提交记录好像有一页了。。。。


|