P4568 91pts TLE求调
  • 板块灌水区
  • 楼主red_fire
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/18 20:17
  • 上次更新2024/7/18 21:12:17
查看原帖
P4568 91pts TLE求调
520855
red_fire楼主2024/7/18 20:17
#include<bits/stdc++.h>
using namespace std;
const int N=7e5;
long long INF=0x7fffffff;
struct edge{int y,n;long long z;}e[N<<1];
int n,m,k,lea,acc;
int head[N],cnt;
bool vis[22][N];
long long dis[22][N];
int q[2][N<<6];
int fr,ta;
void ad(int x,int y,long long z)
{
    e[++cnt].n=head[x];
    e[cnt].y=y;
    e[cnt].z=z;
    head[x]=cnt;
}
void init()
{
    scanf("%d%d%d",&n,&m,&k);
    scanf("%d%d",&lea,&acc);
    int x=0,y=0;
    INF=INF*INF;
    long long z=0;
    for(int i=1;i<=m;++i)
    {
        scanf("%d%d%lld",&x,&y,&z);
        ad(x,y,z);
        ad(y,x,z);
    }
}
void sp()
{
    int i,j;
    for(i=0;i<n;++i)
        for(j=0;j<=k;++j)
            dis[j][i]=INF;
    dis[0][lea]=0;
    fr=1;
    ta=0;
    ++ta;
    q[0][ta]=lea;
    q[1][ta]=0;
    while(fr<=ta)
    {
        int u=q[0][fr],st=q[1][fr];
        ++fr;
        vis[st][u]=false;
        for(i=head[u];i;i=e[i].n)
        {
            int v=e[i].y;
            if(st<k)
            {
                if(dis[st+1][v]>dis[st][u])
                {
                    dis[st+1][v]=dis[st][u];
                    if(vis[st+1][v]==false)
                    {
                        vis[st+1][v]=true;
                        ++ta;
                        q[0][ta]=v;
                        q[1][ta]=st+1;
                    }
                }
            }
            if(dis[st][v]>dis[st][u]+e[i].z)
            {
                dis[st][v]=dis[st][u]+e[i].z;
                if(vis[st][v]==false)
                {
                    ++ta;
                    vis[st][v]=true;
                    q[0][ta]=v;
                    q[1][ta]=st;
                }
            }
        }
    }
}
void work()
{
    long long ans=INF;
    sp();
    for(int i=0;i<=k;++i)
        ans=min(ans,dis[i][acc]);
    cout<<ans;
}
int main()
{
    init();
    work();
    return 0;
}












2024/7/18 20:17
加载中...