#include<bits/stdc++.h>
using namespace std;
long i,vis[100000]={0};
vector<long>vec[10000];
int bfs(int n)
{
queue<int>q;
q.empty();
long tt[100003]={0},c1=0,c2=1;
q.push(n);
vis[n]=1;
tt[n]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=1;
for(int i=0;i<vec[u].size();i++)
{
int v=vec[u][i];
if(vis[v]==0)
{
q.push(v);
vis[v]=1;
if(tt[u]==1)
{
tt[v]=2;
c1++;
}
if(tt[u]==2)
{
tt[v]=1;
c2++;
}
}
else
{
if(tt[u]==tt[v])
return -1;
}
}
}
c1=min(c1,c2);
return c1;
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long a,b,x,y,ans,rs=0;
cin>>a>>b;
for(i=0;i<a+5;i++)
{
vis[i]=0;
vec[i].clear();
}
for(i=0;i<b;i++)
{
cin>>x>>y;
vec[x].push_back(y);
vec[y].push_back(x);
}
for(i=0;i<a;i++)
{
if(vis[i]==0)
{
if(vec[i].size()>0)
{
ans=bfs(i);
if(ans==-1)
break;
rs=rs+ans;
}
else
rs+=1;
}
if(ans==-1)
break;
}
if(ans==-1)
cout<<-1<<endl;
else
cout<<rs<<endl;
}
}
using namespace std;
long i,vis[100000]={0};
vector<long>vec[10000];
int bfs(int n)
{
queue<int>q;
q.empty();
long tt[100003]={0},c1=0,c2=1;
q.push(n);
vis[n]=1;
tt[n]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=1;
for(int i=0;i<vec[u].size();i++)
{
int v=vec[u][i];
if(vis[v]==0)
{
q.push(v);
vis[v]=1;
if(tt[u]==1)
{
tt[v]=2;
c1++;
}
if(tt[u]==2)
{
tt[v]=1;
c2++;
}
}
else
{
if(tt[u]==tt[v])
return -1;
}
}
}
c1=min(c1,c2);
return c1;
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long a,b,x,y,ans,rs=0;
cin>>a>>b;
for(i=0;i<a+5;i++)
{
vis[i]=0;
vec[i].clear();
}
for(i=0;i<b;i++)
{
cin>>x>>y;
vec[x].push_back(y);
vec[y].push_back(x);
}
for(i=0;i<a;i++)
{
if(vis[i]==0)
{
if(vec[i].size()>0)
{
ans=bfs(i);
if(ans==-1)
break;
rs=rs+ans;
}
else
rs+=1;
}
if(ans==-1)
break;
}
if(ans==-1)
cout<<-1<<endl;
else
cout<<rs<<endl;
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন