From 9b733126c028206e1b0df7edad24e5b83b056bf5 Mon Sep 17 00:00:00 2001 From: Akshat Joshi <39386084+AkshatJoshi2000@users.noreply.github.com> Date: Tue, 24 Sep 2019 14:36:57 +0530 Subject: [PATCH] Create TR5 --- TR5 | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 TR5 diff --git a/TR5 b/TR5 new file mode 100644 index 0000000..d7116e1 --- /dev/null +++ b/TR5 @@ -0,0 +1,67 @@ +#include +using namespace std; +#define M 100010 +#define ll long long int +#define m 1000000007 +#define PI 3.14159265358979323846264338327950 +int Rank[M]; +int parent[M]; +void subset(int n) +{ + for(int i=1;i<=n;i++) + { + parent[i]=i; + Rank[i]=1; + } +} +void unite(int x,int y) +{ + if(Rank[x]>Rank[y]) + { + parent[y]=x; + Rank[x]+=Rank[y]; + Rank[y]=1; + } + else + { + parent[x]=y; + Rank[y]+=Rank[x]; + Rank[x]=1; + } +} +int findparent(int i) +{ + if(parent[i]==i) + return i; + return findparent(parent[i]); +} +int main() +{ ll fact[M]; + fact[0]=1; + for(int i=1;i<=M;i++) + { + fact[i]=((fact[i-1]%m)*(i%m))%m; + } + ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); + int n; + cin>>n; + subset(n); + int x,y; + int k; + cin>>k; + while(k--) + { + cin>>x>>y; + int xroot=findparent(x+1); + int yroot=findparent(y+1); + if(xroot!=yroot) unite(xroot,yroot); + } + ll ways=1; + for(int i=1;i<=n;i++) + { + ways=((ways%m)*(fact[Rank[i]]%m))%m; + } + cout<