সোমবার, ১১ সেপ্টেম্বর, ২০১৭

UVA 11690 - Money Matters

# 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;
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...