我的代码输出了什么问题?
#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,但是不知道哪里有