666
2026-10-04 16:25:45
发布于:浙江
#include <bits/stdc++.h>
using namespace std; const int N = 2009; struct Node {long long x, y, b;} fire[N]; vector<int> g[N]; int dist[N]; int k, D, s, t;int main() {freopen("firefly.in", "r", stdin);freopen("firefly.out", "w", stdout);cin >> k >> D >> s >> t; for (int i = 1; i <= k; i++) { cin >> fire[i].x >> fire[i].y >> fire[i].b;}for (int i = 1; i <= k; i++) {for (int j = i+1; j <= k; j++) {bool f1 = (fire[i].x == fire[j].x) || (fire[i].y == fire[j].y);bool f2 = abs(fire[i].b - fire[j].b) <= D; if (f1 && f2) { g[i].push_back(j); g[j].push_back(i); } } }memset(dist, -1, sizeof dist);queue<int> q;dist[s] = 0; q.push(s);while (!q.empty()) {int u = q.front(); q.pop(); for (int v : g[u]) { if (dist[v] == -1) {dist[v] = dist[u] + 1;q.push(v); if (v == t) { cout << dist[t]; return 0;} }}}cout << dist[t]; return 0;}
这里空空如也




















有帮助,赞一个