이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#pragma gcc-optimize("o3, unroll-loops")
const int nx=5e2+5, mx=1e3+5;
ll n, m, a[mx], b[mx], w[mx], x, q, L[nx], R[nx], dsu[nx];
vector<ll> dp[nx];
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> add, rem;
int find(int x)
{
if (dsu[x]==x) return x;
return dsu[x]=find(dsu[x]);
}
bool isused(ll idx, ll cw)
{
for (int i=1; i<=n; i++) dsu[i]=i;
vector<pair<ll, ll>> v;
for (int i=1; i<=m; i++) v.push_back({abs(w[i]-cw), i});
sort(v.begin(), v.end());
for (auto [_, i]:v)
{
if (find(a[i])==find(b[i])) continue;
dsu[find(a[i])]=find(b[i]);
if (i==idx) return 1;
}
return 0;
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>m;
for (int i=1; i<=m; i++) cin>>a[i]>>b[i]>>w[i], L[i]=1, R[i]=1e9;
for (int i=1; i<=m; i++)
{
if (!isused(i, w[i])) continue;
ll l=1, r=w[i];
while (l<r)
{
ll md=(l+r)/2;
if (isused(i, md)) r=md;
else l=md+1;
}
//cout<<"edge :";
//cout<<l<<' ';
add.push({l, i});
l=w[i], r=1e9;
while (l<r)
{
ll md=(l+r+1)/2;
if (isused(i, md)) l=md;
else r=md-1;
}
rem.push({l, i});
//cout<<r<<'\n';
}
cin>>q;
set<ll> edg;
while (q--)
{
cin>>x;
while (!add.empty()&&add.top().first<=x) edg.insert(add.top().second), add.pop();
ll res=0;
for (auto tmp:edg) res+=abs(w[tmp]-x);
cout<<res<<'\n';
while (!rem.empty()&&rem.top().first<=x) edg.erase(rem.top().second), rem.pop();
}
}
컴파일 시 표준 에러 (stderr) 메시지
reconstruction.cpp:6: warning: ignoring '#pragma gcc ' [-Wunknown-pragmas]
6 | #pragma gcc-optimize("o3, unroll-loops")
|
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |