Pairing Problem IN Graph

I don’t know why code is wrong for all test cases. Please help!

#include
#include
using namespace std;
void dfs(int id,vector&vis,vectoradj[],int &count){
vis[id]=1;
count++;
for(auto e:adj[id]){
if(!vis[e]){
dfs(e,vis,adj,count);
}
}
}
int main() {
int n,m;
cin>>n>>m;
vectoradj[n];
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);

}
vectorvis(n,0);
int cnt=0;
int p1=1;
int count=0;
for(int i=0;i<n;i++){
if(!vis[i]){
cnt++;
count=0;
dfs(i,vis,adj,count);
p1=p1*count;

}

}
cout<<p1;
return 0;
}