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的随书光盘资源管理系统