this code works well for given test case but i get WA when i submit it, please help, heres my code
#include<bits/stdc++.h>
#define llu long long unsigned
#define MAX 10000
#define pb push_back
#define w white
#define b black
using namespace::std;
typedef vector <int> vi;
typedef vector<vi> vvi;
enum colours {w, gray, b};
llu N, M, t = 0 ;
vector <int> par, low, disc, done, clr;
set <int> art_points;
//bool backEdge[MAX][MAX];
void Dfs(vvi &g, int i)
{
t++;
disc[i] = t ;
low[i] = t;
clr[i] = gray;
for(auto it : g[i])
{
if(clr[it] == w)
{
par[it] = i;
Dfs(g, it);
if(disc[i] = 1)
{
if(g[i].size() >= 2 && low[it] > disc[i])
art_points.insert(i);
}
else if(low[it] > disc[i])
art_points.insert(i);
low[i] = min(low[i], low[it]);
}
else if(par[i] != it)
low[i] = min(low[i], low[it]);
}
clr[i] = b;
done[i] = ++t;
}
int main()
{
llu T, K, s, d;
//cout<<"\nenter the test cases :\t";
cin>>T;
while(T--)
{
//cout<<"\nenter no. of cities, roads, and cost of shield :\n";
cin>>N>>M>>K;
vvi g(N);
par.clear(); low.clear(); done.clear(); disc.clear(); clr.clear();
par = vector<int> (N, -1);
disc = vector<int> (N, 0);
low = vector<int> (N, 0);
done = vector<int> (N, 0);
disc = vector<int> (N, 0);
clr = vector<int> (N, w);
g.clear();
//cout<<"\nenter connected roads :\t";
for(int i = 0 ; i < M ; ++i)
{
cin>>s>>d;
g[s].pb(d);
g[d].pb(s);
}
Dfs(g, 0);
//cout<<"total cost required is :\t";
cout<<art_points.size()*K;
art_points.clear();
cout<<"\n";
}
//cout<<"\narticulation points are :\t";
// for(auto it : art_points)
// cout<<it<" ";
return 0 ;
}