社区讨论

95分求调

P9751[CSP-J 2023] 旅游巴士参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@lovaop8f
此快照首次捕获于
2023/11/12 17:50
2 年前
此快照最后确认于
2023/11/12 19:58
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define fo(i,a,b) for(int i=(a);i<(b);++i)
using namespace std;
const int N=2e4+5;
#define PII pair<int,int>

int n,m,k;
vector<PII> G[N];

void add(int x,int y,int e){
    G[x].push_back({y,e});
}

int f[N][105];
int vis[N][105];

signed main(){
    cin>>n>>m>>k;
    rep(i,1,m){
        int x,y,e;
        cin>>x>>y>>e;
        add(x,y,e);
    }
    memset(f,0x3f,sizeof f);
    queue<PII> q;q.push({1,0});
    f[1][0]=0;vis[1][0]=1;

    while(q.size()){
        int u=q.front().first,p=q.front().second;
        q.pop();vis[u][p]=0;
        int pp=f[u][p];
        for(auto d:G[u]){
            int v=d.first,w=d.second,t;
            if(pp>=w) t=pp;
            else t=((w-pp+k-1)/k)*k+pp;
            if(f[v][(t+1)%k]>t+1){
                f[v][(t+1)%k]=t+1;
                if(!vis[v][(t+1)%k]){
                    vis[v][(t+1)%k]=1;
                    q.push({v,(t+1)%k});
                }
            }
        }
    }
    cout<<f[n][0];
}
https://www.luogu.com.cn/record/134770832

回复

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

正在加载回复...