# include<sstream>
# include<bits/stdc++.h>
using namespace std;
long par[50010];
long find(long xx)
{
if(par[xx]==xx)
return xx;
return par[xx]=find(par[xx]);
}
void unionkorlam(long a,long b)
{
if(find(a)!=find(b))
{
par[find(b)]=find(a);
}
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long n,m,i,x,y,tot[50010]={0},flag=0,ar[50010]={0},yy;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>ar[i];
par[i]=i;
}
for(i=0;i<m;i++)
{
cin>>x>>y;
unionkorlam(x,y);
}
for(i=0;i<n;i++)
{
yy=find(i);
tot[yy]+=ar[i];
}
for(i=0;i<n;i++)
{
if(tot[i]<0)
{
flag=1;
}
}
if(flag==1)
{
cout<<"IMPOSSIBLE"<<endl;
}
else
cout<<"POSSIBLE"<<endl;
}
}
# include<bits/stdc++.h>
using namespace std;
long par[50010];
long find(long xx)
{
if(par[xx]==xx)
return xx;
return par[xx]=find(par[xx]);
}
void unionkorlam(long a,long b)
{
if(find(a)!=find(b))
{
par[find(b)]=find(a);
}
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long n,m,i,x,y,tot[50010]={0},flag=0,ar[50010]={0},yy;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>ar[i];
par[i]=i;
}
for(i=0;i<m;i++)
{
cin>>x>>y;
unionkorlam(x,y);
}
for(i=0;i<n;i++)
{
yy=find(i);
tot[yy]+=ar[i];
}
for(i=0;i<n;i++)
{
if(tot[i]<0)
{
flag=1;
}
}
if(flag==1)
{
cout<<"IMPOSSIBLE"<<endl;
}
else
cout<<"POSSIBLE"<<endl;
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন