文章
35
粉丝
0
获赞
185
访问
6.0k
#include<bits/stdc++.h>
using namespace std;
const int n = 1e3 + 9;
int dis[n][n];
int extime(int x)
{
if(x % 2 == 0) return 2;
else return 1;
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
int N, M, S, T, A;
while(cin >> N >> M >> S >> T >> A)
{
memset(dis, 0x3f, sizeof(dis));
for(int i = 1; i <= N; i++) dis[i][i] = 0; // 自己到自己距离为0,这里绝对不能错
for(int i = 1; i <= M; i++)
{
int u, v, t; cin >> u >> v >> t;
dis[u][v] = min(dis[u][v], t + extime(u)); //在建图的时候直接把权值加入即可
dis[v][u] = min(dis[v][u], t + extime(v)); //无向图,记得两个方向都要
}
for(int k = 1; k <= N; k++)
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
if(dis[S][T] <= A) cout << "YES " << dis[S][T]...
登录后发布评论
暂无评论,来抢沙发