제출 #1167910

#제출 시각아이디문제언어결과실행 시간메모리
1167910kungfulonDrivers (BOI24_drivers)C++20
100 / 100
104 ms7504 KiB
#include <bits/stdc++.h> using namespace std; int n,m,u; struct edge{ int u, v, w; edge(int u, int v, int w): u(u), v(v), w(w) {} bool operator<(const edge& other) const { return w < other.w; } }; int dsu[200001]; int find(int x){ return !dsu[x] ? x : dsu[x] = find(dsu[x]); } int main(){ if(fopen("inp.txt", "r")){ freopen("inp.txt", "r", stdin); } ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m >> u; vector<tuple<int,int,int>> edges; for(int i = 0; i < m; i++){ int u, v, w; cin >> u >> v >> w; edges.push_back({w, u, v}); } sort(edges.begin(), edges.end()); vector<tuple<int,int,int>> query; for(int i = 0; i < u; i++){ int u, v, w; cin >> u >> v >> w; query.push_back({w, u, v}); } vector<int> idx(u); vector<bool> res (u, false); for(int i = 0; i < u; i++){ idx[i] = i; } sort(idx.begin(), idx.end(), [&](int a, int b){ return get<0>(query[a]) < get<0>(query[b]); }); int id = 0; for(int i = 0; i < u; i++){ auto [t, a, b] = query[idx[i]]; while(id < edges.size() && get<0>(edges[id]) <= t){ int x = find(get<1>(edges[id])); int y = find(get<2>(edges[id])); if(x != y){ dsu[x] = y; } id++; } res[idx[i]] = find(a) == find(b); } for(int i = 0; i < u; i++){ cout << (res[i] ? "TAIP\n" : "NE\n"); } }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:23:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |         freopen("inp.txt", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...