Submission #1517701


Source Code Expand

#include<bits/stdc++.h>
using namespace std;  
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
#define rep(i,n) for(ll i=0;i<(n);i++)  
#define pii pair<int,int>
#define piii pair<int,pii>
#define mp make_pair
#define pb push_back  
#define ALL(a) (a).begin(),(a).end()
#define FST first
#define SEC second  
const int INF = (INT_MAX/2);
const ll LLINF = (LLONG_MAX/2);
const double eps = 1e-5;
const double PI = M_PI;  
#define DEB cout<<"!"<<endl
#define SHOW(a,b) cout<<(a)<<" "<<(b)<<endl
#define SHOWARRAY(ar,i,j) REP(a,i)REP(b,j)cout<<ar[a][b]<<((b==j-1)?((a==i-1)?("\n\n"):("\n")):(" "))
  
#define DIV 1000000007
typedef vector<ll> Array;
typedef vector<Array> matrix;

typedef tuple<int,int,int> tiii;
#define mt make_tuple

#define Nodes 100000
class UF{
public:
  int value[Nodes];
  int over[Nodes]; // When over < 0, 'over' keep elements of node(using negative number). -1 means this tree is a node.
  int root(int index){
    int t = index;
    while(over[t] >= 0)
      t = over[t];
    if(index!=t)over[index] = t;
    return t;
  }
  int merge(int a,int b){
    if(this->root(a) == this->root(b)) return false;
    over[root(a)] += over[root(b)];
    over[root(b)] = root(a);
  }
  UF(){rep(i,Nodes) over[i] = -1;}
};

int main(){
  UF u;
  int n,m; cin >> n >> m;
  rep(i,m){
    int a,b; cin >> a >> b;
    a--,b--;
    u.merge(a,b);
  }
  set<int> s;
  rep(i,n){
    s.insert(u.root(i));
  }
  cout << s.size() -1 << endl;
}

Submission Info

Submission Time
Task B - 道路工事
User cashisu1
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1527 Byte
Status AC
Exec Time 496 ms
Memory 5376 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 22
Set Name Test Cases
Sample sample1.txt, sample2.txt
All 0.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt
Case Name Status Exec Time Memory
0.txt AC 1 ms 640 KB
1.txt AC 1 ms 640 KB
10.txt AC 1 ms 640 KB
11.txt AC 1 ms 640 KB
12.txt AC 1 ms 640 KB
13.txt AC 1 ms 640 KB
14.txt AC 1 ms 640 KB
15.txt AC 43 ms 640 KB
16.txt AC 23 ms 5376 KB
17.txt AC 23 ms 5376 KB
18.txt AC 23 ms 5376 KB
19.txt AC 496 ms 1408 KB
2.txt AC 1 ms 640 KB
3.txt AC 1 ms 640 KB
4.txt AC 1 ms 640 KB
5.txt AC 1 ms 640 KB
6.txt AC 1 ms 640 KB
7.txt AC 1 ms 640 KB
8.txt AC 1 ms 640 KB
9.txt AC 1 ms 640 KB
sample1.txt AC 1 ms 640 KB
sample2.txt AC 1 ms 640 KB