Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 40121

galactik.. giving WA. plz help

$
0
0
#include <cstdio>
#include<algorithm>
#include <cstring>
#include <vector>
using namespace std;

const int maxN = 100010;
vector<int> a[maxN];
vector<int> x;
int mark[maxN];
int value[maxN];
int mini=10000000;

void dfs(int u)
{
    mark[u]=1;
    if(value[u] < mini && value[u]>=0)
    mini= value[u];

    for(int i=a[u].size();i--;)
    {
        int v=a[u][i];
        if(!mark[v]) dfs(v);
    }
}

int main()
{
        int n,m,flag=0,minx=0;
        scanf("%d%d",&n,&m);

        int i,u,v;
        long long sum=0;
        for(i=0;i<n;i++) {
            a[i].clear();
            mark[i]=0;
        }
        for(int k=0;k<m;k++)
        {
            scanf("%d%d",&u,&v);
            a[u-1].push_back(v-1);
            a[v-1].push_back(u-1);
        }
        for(i=0;i<n;i++) scanf("%d",&value[i]);

        if(n<2)
        {
            printf("0\n");
            return 0;
        }

        for(i=0;i<n;i++)
        {
            if(!mark[i])
            {
                mini=10000000;
                dfs(i);
                if(mini==10000000)
                flag=1;
                else
                x.push_back(mini);
            }
        }

        if(flag==1)
        {
            printf("-1\n");
        }
        else
        {
            for(i=0;i<x.size();i++)
            {
                sum= sum+ x[i];
                if(x[i]<minx)minx= x[i];
            }

            sum+= (x.size()-2)*minx;
            printf("%lld\n",sum);

        }
    return 0;
}

Viewing all articles
Browse latest Browse all 40121

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>