社区讨论

70??

P3003[USACO10DEC] Apple Delivery S参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mi5htzym
此快照首次捕获于
2025/11/19 12:19
4 个月前
此快照最后确认于
2025/11/19 12:19
4 个月前
查看原帖
为何70分呢?
CPP
#include<iostream>
#include<cstring>
using namespace std;
struct edge
{
    long long next,to,cost;
}e[1000001];
long long vis[1000001],team[1000001],head[1000001],minn[1000001];
long long u,num;
void add(long long from,long long to,long long dis)
{
    e[++num].next=head[from];
    e[num].to=to;
    e[num].cost=dis;
    head[from]=num;
}
void spfa(long long s)
{
    memset(minn,0x7f,sizeof(minn));
    memset(vis,0,sizeof(vis));
    long long h=0,t=1;
    minn[s]=0;
    vis[s]=1;
    team[1]=s;
    while(h<t)
    {
        h++;
        u=team[h];
        vis[u]=0;
        for(long long i=head[u];i!=0;i=e[i].next)
        {
            long long to=e[i].to;
            if(minn[u]+e[i].cost<minn[to])
            {
                minn[to]=minn[u]+e[i].cost;
                if(vis[to]==0)
                {
                    t++;
                    vis[to]=1;
                    team[t]=to;
                }
            }
        }
    }
}
int main()
{
    long long c,p,pb,pa1,pa2;
    cin>>c>>p>>pb>>pa1>>pa2;
    for(long long i=1;i<=c;i++)
    {
        long long x,y,z;
        cin>>x>>y>>z;
        add(x,y,z);
        add(y,x,z);
    }
    spfa(pa1);
    long long pb_pa1=minn[pb];
    long long pa1_pa2=minn[pa2];
    spfa(pa2);
    long long pb_pa2=minn[pb];
    long long pa2_pa1=minn[pa1];
    cout<<min(pb_pa1+pa1_pa2,pb_pa2+pa2_pa1)<<endl;
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...