11857 - Driving Range

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAX 1000000
using namespace std;

long long par[MAX];
struct node
{
    long long x,y,length;

}arr[MAX+5];

long long khoj_rep(long long r)
{
    if(par[r]==r)
    {
        return r;
    }
    else
    {
        return par[r]=khoj_rep(par[r]);
    }
}

bool cmp(node lhs,node rhs)
{
    return lhs.length<rhs.length;

}

int main()
{
    long long n,m,i,j,u,v,counter,minimum_range;
    while(cin>>n>>m)
    {
        if(n==0 && m==0)
        {
            break;
        }
        for(i=0;i<n;i++)
        {
            par[i]=i;
        }
        for(i=0;i<m;i++)
        {
            cin>>arr[i].x>>arr[i].y>>arr[i].length;
        }
        sort(arr,arr+m,cmp);

        counter=0;
        for(j=0;j<i;j++)
        {
            u=khoj_rep(arr[j].x);
            v=khoj_rep(arr[j].y);
            if(u!=v)
            {
                par[u]=v;
                counter++;
                minimum_range=arr[j].length;
            }
        }
        if(counter==n-1)
        {
            cout<<minimum_range<<endl;
        }
        else
        {
            cout<<"IMPOSSIBLE"<<endl;
        }
        memset(par,0,sizeof(par));

    }
    return 0;
}

0 comments: (+add yours?)