Submission #1807776
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
using Int = long long;
struct Kruskal{
struct UnionFind{
Int n;
vector<Int> r,p;
UnionFind(){}
UnionFind(Int sz):n(sz),r(sz,1),p(sz,0){iota(p.begin(),p.end(),0);}
Int find(Int x){
return (x==p[x]?x:p[x]=find(p[x]));
}
bool same(Int x,Int y){
return find(x)==find(y);
}
void unite(Int x,Int y){
x=find(x);y=find(y);
if(x==y) return;
if(r[x]<r[y]) swap(x,y);
r[x]+=r[y];
p[y]=x;
}
};
struct edge{
Int from,to,cost;
edge(){}
edge(Int from,Int to,Int cost):from(from),to(to),cost(cost){}
bool operator<(const edge& e) const{
return cost<e.cost;
}
};
Int n;
vector<edge> edges;
Kruskal(){}
Kruskal(Int sz):n(sz){}
void add_edge(Int u,Int v,Int c){
edges.push_back(edge(u,v,c));
}
void input(Int m,Int offset=0){
Int a,b,c;
for(Int i=0;i<m;i++){
cin>>a>>b>>c;
add_edge(a+offset,b+offset,c);
}
}
Int build(){
sort(edges.begin(),edges.end());
UnionFind uf(n+1);
Int res=0;
for(Int i=0;i<(Int)edges.size();i++){
edge e=edges[i];
if(!uf.same(e.from,e.to)){
res+=e.cost;
uf.unite(e.from,e.to);
}
}
return res;
}
};
signed main(){
Int n,m;
cin>>n>>m;
Kruskal k(n);
k.input(m,-1);
auto es=k.edges;
Int q;
cin>>q;
for(Int i=0;i<q;i++){
Int s,t;
cin>>s>>t;
s--;t--;
Kruskal p(n);
p.edges=es;
p.add_edge(s,t,0);
cout<<p.build()<<endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
A - Graph |
User |
beet |
Language |
C++14 (GCC 5.4.1) |
Score |
200 |
Code Size |
1638 Byte |
Status |
TLE |
Exec Time |
3156 ms |
Memory |
41404 KB |
Judge Result
Set Name |
Sample |
subtask1 |
subtask2 |
All |
Score / Max Score |
0 / 0 |
200 / 200 |
0 / 300 |
0 / 200 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
sample_1.txt, sample_2.txt |
subtask1 |
sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt |
subtask2 |
sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt |
All |
sample_1.txt, sample_2.txt, sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_1.txt |
AC |
1 ms |
256 KB |
sample_2.txt |
AC |
1 ms |
256 KB |
subtask_1_1.txt |
AC |
2 ms |
384 KB |
subtask_1_10.txt |
AC |
196 ms |
20972 KB |
subtask_1_11.txt |
AC |
1 ms |
256 KB |
subtask_1_2.txt |
AC |
41 ms |
4084 KB |
subtask_1_3.txt |
AC |
391 ms |
38504 KB |
subtask_1_4.txt |
AC |
5 ms |
640 KB |
subtask_1_5.txt |
AC |
6 ms |
704 KB |
subtask_1_6.txt |
AC |
100 ms |
11248 KB |
subtask_1_7.txt |
AC |
391 ms |
38504 KB |
subtask_1_8.txt |
AC |
5 ms |
640 KB |
subtask_1_9.txt |
AC |
11 ms |
1276 KB |
subtask_2_1.txt |
TLE |
3156 ms |
41404 KB |
subtask_2_2.txt |
TLE |
3156 ms |
40296 KB |
subtask_2_3.txt |
TLE |
3156 ms |
40328 KB |
subtask_2_4.txt |
TLE |
3156 ms |
40128 KB |
subtask_2_5.txt |
AC |
944 ms |
672 KB |
subtask_2_6.txt |
TLE |
3155 ms |
2296 KB |
subtask_2_7.txt |
TLE |
3156 ms |
9968 KB |
subtask_2_8.txt |
TLE |
3156 ms |
41320 KB |
subtask_3_1.txt |
TLE |
3156 ms |
40296 KB |
subtask_3_2.txt |
TLE |
3156 ms |
40040 KB |
subtask_3_3.txt |
TLE |
3155 ms |
800 KB |
subtask_3_4.txt |
TLE |
3155 ms |
1316 KB |
subtask_3_5.txt |
TLE |
3156 ms |
20864 KB |
subtask_3_6.txt |
TLE |
3156 ms |
31720 KB |
subtask_3_7.txt |
TLE |
3156 ms |
41064 KB |
subtask_3_8.txt |
TLE |
3156 ms |
40020 KB |