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
AC × 2
AC × 12
AC × 14
TLE × 7
AC × 16
TLE × 15
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