Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- public class Solution {
- static int getParent(ArrayList<Integer> al,int i)
- { if(al.get(i)==i)//if v[i]==i return i (in c++)
- return i;
- while(al.get(i)!=i)
- i=al.get(i);
- return i;
- }
- static int index(ArrayList<String> n,String s)//if s is in names array, it returns index. Else -1
- { for(int i=0;i<n.size();i++)
- if(n.get(i).equals(s))
- return i;
- return -1;
- }
- public static void main(String[] args) {
- ArrayList<Integer> p=new ArrayList<Integer>();//vector of type integer in c++
- int[] f={15,12,13,4,19};
- ArrayList<String> names=new ArrayList<String>();//maintain a vector of strings in c++
- names.add("John");
- names.add("Jon");
- names.add("Chris");
- names.add("Kris");
- names.add("Christopher");
- for(int i=0;i<names.size();i++)
- p.add(i);
- String syn[][]=new String[4][2];
- syn[0][0]="John";
- syn[0][1]="Jon";
- syn[1][0]="Jon";
- syn[1][1]="Johnny";
- syn[2][0]="Chris";
- syn[2][1]="Kris";
- syn[3][0]="Chris";
- syn[3][1]="Christopher";
- for(int i=0;i<4;i++)
- { int a=index(names,syn[i][0]);
- int b=index(names,syn[i][1]);
- int l=names.size();
- if(a==-1 && b==-1)
- { names.add(syn[i][0]);
- p.add(l+1);
- names.add(syn[i][1]);
- p.add(l+1);
- }
- else if(a==-1)
- { names.add(syn[i][0]);
- p.add(p.get(b));
- }
- else if(b==-1)
- { names.add(syn[i][1]);
- p.add(p.get(a));
- }
- else
- { if(p.get(a)==a && p.get(b)==b)
- p.set(b,a);
- else if(p.get(a)==a)
- p.set(a,b);
- else
- p.set(b,a);
- }
- }
- int l=p.size();
- int[] temp=new int[l];//initialise all values to 0
- for(int i=0;i<l;i++)
- { if(getParent(p,i)==i && i<f.length)
- temp[i]+=f[i];
- else if(getParent(p,i)!=i && i<f.length)
- temp[getParent(p,i)]+=f[i];
- else
- continue;
- }
- for(int i=0;i<l;i++)
- if(temp[i]!=0)
- System.out.println(names.get(i)+" "+temp[i]);
- }
- }
Add Comment
Please, Sign In to add comment