leetcode 1697. Checking Existence of Edge Length Limited Paths

📅 发布时间:2026/8/9 16:26:53
leetcode 1697. Checking Existence of Edge Length Limited Paths
Problem: 1697. 检查边长度限制的路径是否存在不会做看了其他人的codes按照距离升序排序然后对所有查询距离的边全部加入进来若联通则true否则falseCodeclass unionjoin{ public: vectorint arr; int count 0, n; unionjoin(int n_){ arr.resize(n_1); n n_1; for(int i 0; i n; i) { arr[i] i; } } int find(int a) { while(a!arr[a]) a arr[a]; return a; } void join(int a, int c) { int aa find(a); int cc find(c); if(aa cc) { arr[aa] cc; arr[cc] cc; } else { arr[cc] aa; arr[aa] aa; } } }; class Solution { public: static bool compare(vectorint a, vectorint c) { return a[2] c[2]; } vectorbool distanceLimitedPathsExist(int n, vectorvectorint edgeList, vectorvectorint queries) { int nn queries.size(), m edgeList.size(); vectorvectorint query; for(int i 0; i nn; i) { query.push_back( { queries[i][0], queries[i][1], queries[i][2], i } ); } sort(query.begin(), query.end(), compare); sort(edgeList.begin(), edgeList.end(), compare); unionjoin un unionjoin(n); vectorbool ret(nn, false); int j 0; for(int i 0; i nn; i) { while(j m edgeList[j][2] query[i][2]) { un.join(edgeList[j][0], edgeList[j][1]); j; } ret[query[i][3]] un.find(query[i][0]) un.find(query[i][1]); } return ret; } };