紧急求助-2023CSP-J2-第4题
  • 板块灌水区
  • 楼主Ian_NIE
  • 当前回复1
  • 已保存回复5
  • 发布时间2023/10/28 15:58
  • 上次更新2023/10/28 17:32:01
查看原帖
紧急求助-2023CSP-J2-第4题
602171
Ian_NIE楼主2023/10/28 15:58

此题

我的代码输出了什么问题?

#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
#define int long long
using namespace std;

int n, m, k, dis[10005][105];
struct node
{
    int x, k;
};
vector<int> e[10005], t[10005];

bool bfs(int mid)
{
    memset(dis, -1, sizeof dis);
    queue<node> q;
    dis[n][0] = mid * k;
    q.push(node{n, 0});
    while(!q.empty())
    {
        int x = q.front().x, b = q.front().k;
        q.pop();
        if(dis[x][b] == 0) continue;
        for(int i = 0; i <= e[x].size() - 1; i++)
        {
            if(t[x][i] >= dis[x][b]) continue;
            int y = e[x][i], p = (b + k - 1) % k;
            if(dis[y][p] != -1) continue;
            dis[y][p] = dis[x][b] - 1;
            q.push(node{y, p});
        }
    }
    if(dis[1][0] == -1) return false;
    return true;
}

signed main()
{
    cin >> n >> m >> k;
    for(int i = 1; i <= m; i++)
    {
        int u, v, a;
        cin >> u >> v >> a;
        e[v].push_back(u);
        t[v].push_back(a);
    }
    int l = 0, r = 2e6;
    while(l < r)
    {
        int mid = (l + r) / 2;
        if(bfs(mid)) r = mid;
        else l = mid + 1;
    }
    if(r == 2e6) cout << -1 << endl;
    else cout << l * k << endl;
    
    return 0;
}

根据评测结果 能看出我的代码应该有UB,但是不知道哪里有

2023/10/28 15:58
加载中...