답안 #551422

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
551422 2022-04-20T15:46:34 Z inksamurai Reconstruction Project (JOI22_reconstruction) C++17
31 / 100
5000 ms 16300 KB
#include <bits/stdc++.h>
#define int ll
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define rng(i,x,n) for(int i=x;i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define vec(...) vector<__VA_ARGS__>
#define _3xxEYjy ios::sync_with_stdio(0),cin.tie(0)
typedef long long ll;
using pii=pair<int,int>;
using vi=vector<int>;
void print(){cout<<'\n';}
template<class h,class...t>
void print(const h&v,const t&...u){cout<<v<<' ',print(u...);}
// e

struct dsu{
	int n,cmps;
	vector<int> par,siz;
	dsu(int m){init(m);}
	void init(int m){
		n=m;
		cmps=m;
		par.resize(n,0);
		siz.resize(n,0);
		for(int i=0;i<n;i++){
			par[i]=i;
			siz[i]=1;
		}
	}
	void merge(int v,int u){
		v=parent(v),u=parent(u);
		if(v==u)return;
		cmps--;
		if(siz[v]<siz[u])swap(v,u);
		siz[v]+=siz[u];
		par[u]=v;
	}
	int parent(int v){
		return par[v]==v?v:parent(par[v]);
	}
	bool same(int v, int u){
		return parent(v)==parent(u);
	}
	int size(int v=-1){
		return (v==-1?cmps:siz[parent(v)]);
	}
};

signed main(){
_3xxEYjy;
	int n,m;
	cin>>n>>m;

	using tpii=pair<int,pii>;
	vec(tpii) edges;
	rep(i,m){
		int u,v,w;
		cin>>u>>v>>w;
		u-=1,v-=1;
		edges.pb({w,{u,v}});
	}
	sort(edges.begin(),edges.end());

	const int inf=1e10;
	vec(tpii) evts;
	rep(i,m){
		dsu uf(n);
		int r=inf;
		rng(j,i+1,m){
			uf.merge(edges[j].se.fi,edges[j].se.se);
			if(uf.same(edges[i].se.fi,edges[i].se.se)){
				r=edges[j].fi;
				break;
			}
		}
		uf.init(n);
		int l=-inf;
		per(j,i){
			uf.merge(edges[j].se.fi,edges[j].se.se);
			if(uf.same(edges[i].se.fi,edges[i].se.se)){
				l=edges[j].fi;
				break;
			}
		}
		evts.pb({(l+edges[i].fi+1)/2,{1,i}});
		evts.pb({(r+edges[i].fi+1)/2,{-1,i}});
	}
	sort(evts.begin(),evts.end());

	// for(auto tp:evts){
	// 	print(tp.fi,tp.se.fi,edges[tp.se.se].fi);
	// }

	int q;
	cin>>q;
	int i=-1;
	set<int> st;
	rep(_,q){
		int x;
		cin>>x;
		while(i+1<sz(evts) and evts[i+1].fi<=x){
			i+=1;
			if(evts[i].se.fi==1){
				st.insert(evts[i].se.se);
			}else{
				st.erase(evts[i].se.se);
			}
		}
		dsu uf(n);
		int res=0;
		for(auto id:st){
			// print(edges[id].fi);
			res+=abs(edges[id].fi-x);
		}
		cout<<res<<"\n";
		// break;
	}
//	
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 2027 ms 9016 KB Output is correct
21 Correct 1320 ms 8936 KB Output is correct
22 Correct 1456 ms 8872 KB Output is correct
23 Correct 1595 ms 9048 KB Output is correct
24 Correct 1873 ms 9200 KB Output is correct
25 Correct 2052 ms 8888 KB Output is correct
26 Correct 2028 ms 8956 KB Output is correct
27 Correct 2029 ms 8860 KB Output is correct
28 Correct 2019 ms 9020 KB Output is correct
29 Incorrect 904 ms 11560 KB Output isn't correct
30 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Execution timed out 5096 ms 16300 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 4116 ms 12848 KB Output is correct
21 Correct 4238 ms 12996 KB Output is correct
22 Correct 4128 ms 12636 KB Output is correct
23 Correct 4518 ms 12684 KB Output is correct
24 Correct 4634 ms 12732 KB Output is correct
25 Correct 4586 ms 12660 KB Output is correct
26 Correct 4509 ms 12684 KB Output is correct
27 Correct 4584 ms 12652 KB Output is correct
28 Correct 4644 ms 12580 KB Output is correct
29 Correct 4466 ms 12736 KB Output is correct
30 Correct 4363 ms 12676 KB Output is correct
31 Correct 3948 ms 12872 KB Output is correct
32 Correct 3656 ms 13308 KB Output is correct
33 Correct 4180 ms 12400 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 2027 ms 9016 KB Output is correct
21 Correct 1320 ms 8936 KB Output is correct
22 Correct 1456 ms 8872 KB Output is correct
23 Correct 1595 ms 9048 KB Output is correct
24 Correct 1873 ms 9200 KB Output is correct
25 Correct 2052 ms 8888 KB Output is correct
26 Correct 2028 ms 8956 KB Output is correct
27 Correct 2029 ms 8860 KB Output is correct
28 Correct 2019 ms 9020 KB Output is correct
29 Incorrect 904 ms 11560 KB Output isn't correct
30 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 2027 ms 9016 KB Output is correct
21 Correct 1320 ms 8936 KB Output is correct
22 Correct 1456 ms 8872 KB Output is correct
23 Correct 1595 ms 9048 KB Output is correct
24 Correct 1873 ms 9200 KB Output is correct
25 Correct 2052 ms 8888 KB Output is correct
26 Correct 2028 ms 8956 KB Output is correct
27 Correct 2029 ms 8860 KB Output is correct
28 Correct 2019 ms 9020 KB Output is correct
29 Incorrect 904 ms 11560 KB Output isn't correct
30 Halted 0 ms 0 KB -