c_cpp 人力资源道路和图书馆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 人力资源道路和图书馆相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;

vector< vector<int> > g; // adjacency list defined globally (god knows why)

// https://www.hackerrank.com/challenges/torque-and-development/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=graphs

void DFS(int i, vector<bool> &visited, long &groupData){
    visited[i]=true;
    groupData+=1;
    for(int j=0;j<g[i].size();j++){
        if(visited[g[i][j]]==false){
            DFS(g[i][j],visited,groupData);
        }
    }
}
long minCost(long lib, long road) {
    vector<bool> visited(g.size(),false);
    long cost=0;
    for(int i=1;i<g.size();i++){
        if(visited[i]==false){
            long groupData=0;
            DFS(i,visited,groupData); 
            cost+=lib+(groupData-1)*road; // n vertices have (min) n-1 edges
        }
    }
    return cost;
}
int main()
{
    int t;
    cin>>t;
    while(t--){
        long v,e;
        long lib,road;
        cin>>v>>e>>lib>>road;
        bool ans=false;
        if(lib<=road){
            ans=true;
        }
        g.resize(v+1); // 1 indexed // resize graph for every testcase
        for(int i=0;i<e;i++){
            int x,y;
            cin>>x>>y;
            if(ans==false){
                g[x].push_back(y);
                g[y].push_back(x);
            }
        }
        if(ans==true){
            cout<<v*lib<<endl;
        }else{
            cout<<minCost(lib,road)<<endl;
        }
        g.resize(0); // resetting adj list b/w test cases ( as it is defined globally)
    }
    return 0;
}

以上是关于c_cpp 人力资源道路和图书馆的主要内容,如果未能解决你的问题,请参考以下文章

oAuth ASP.NET 成员资格提供程序

python资源交流群

c_cpp 人力资源最低互换2

c_cpp 人力资源阵列左转

c_cpp 创造资源

基于PHP+mysql的随书光盘资源管理系统