WA on #3 #4 #8 求调
查看原帖
WA on #3 #4 #8 求调
581574
ssfx2019s005楼主2023/11/4 14:53

不吸氧TLE,吸氧WA

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <queue>
#include <utility>
#include <cstring>
using namespace std;
typedef pair<int,int> PAII;
int n,m;
const int N=200015,INF=2147483647,M=500015;
int w[M],h[N],e[M],ne[M],cnt,k,s,t;
int d[N];
bool vis[N];
void add_in(int a,int b,int c){
    cnt++;e[cnt]=b; w[cnt]=c; ne[cnt]=h[a]; h[a]=cnt;
}
void djss(int s){
    memset(d,0x3f,sizeof d);
    d[s]=0;
    priority_queue<PAII,vector<PAII>,greater<PAII> > dub;
    dub.push({0,s});
    while(dub.size()){
        PAII temp=dub.top();
        dub.pop();
        int ff=temp.first,ss=temp.second;
        if(vis[ss]) continue;
        vis[ss]=true;
        for(int i=h[ss];~i;i=ne[i]){
            int j=e[i];
            if(d[j]>d[ss]+w[i]){
                d[j]=d[ss]+w[i];
                dub.push({d[j],j});
            }
        }
    
    }
}
int main(){
    scanf("%d%d%d%d%d",&n,&m,&k,&s,&t);
    memset(h,-1,sizeof(h));
    for(int i=1;i<=m;i++){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        add_in(a,b,c);
        add_in(b,a,c);
        for(int j=1;j<=k;j++){
            add_in(a+j*n,b+j*n,c);
            add_in(b+j*n,a+j*n,c);
            add_in(a+(j-1)*n,b+j*n,0);
            add_in(b+(j-1)*n,a+j*n,0);
        }
    }
    djss(s);
    int ans=INF;
    for(int i=0;i<=k;i++)
    	ans=min(ans,d[t+i*n]);
    cout<<ans;
    return 0;
}
2023/11/4 14:53
加载中...