problem Title: FRNDCIRC - FRIEND CIRCLE
problem tag : disjoint-set 2
https://www.spoj.com/problems/classic
can somebody help me ? i am getting wrong answer on test case 3
this is my code
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define pb push_back
#define T int time; scanf("%d", &time); while(time–)
unordered_map < string , ll > mp , m;
unordered_map < string , string > mpp ;
string find(string a ){
if(mpp[a] == a) return a ;
return mpp[a] = find(mpp[a]) ;
}
ll marge(string a , string b){
string para , parb ;
para = find(a) ;
parb = find(b) ;
if(para == parb) return 0 ;
else{
if(mp[parb] > mp[para]) swap(para, parb) ;
mpp[parb] = para ;
mp[para]+=mp[parb];
}
return 0 ;
}
int main(){
T{
ll n ;
cin >> n ;
for( ll i = 0 ; i < n ; i++){
string a , b ;
cin >> a >> b ;
// m[a]++ ;
// m[b]++ ;
if(!m[a]) mpp[a] = a , m[a] = 1 ;
if(!m[b]) mpp[b] = b , m[b] = 1 ;
// cout << m[a] << " " << m[b] << endl ;
if(!mp[a]) mp[a] = 1 ;
if(!mp[b]) mp[b] = 1 ;
// cout << m[a] << " " << m[b] << endl ;
string aa = find(a) ;
string bb = find(b) ;
cout << (mp[aa] + mp[bb]) << endl ;
marge(a , b ) ;
// cout << m[a] << " " << m[b] << endl ;
}
}
return 0 ;
}