当前位置 : 主页 > 编程语言 > java >

乐鑫笔试--地铁打卡活动

来源:互联网 收集:自由互联 发布时间:2022-08-15
#include bits/stdc++.h using namespace std ; //假设有一百个节点 const int N = 100 ; int find ( vector int p , int x ){ return x == p [ x ] ? p [ x ]: p [ x ] = find ( p , p [ x ]); } int main (){ vector int p ( N , - 1 ); int n , m


乐鑫笔试--地铁打卡活动_初始化

 


#include <bits/stdc++.h>
using namespace std;
//假设有一百个节点
const int N=100;


int find( vector<int>&p,int x){
return x==p[x]?p[x]:p[x]=find(p,p[x]);
}
int main(){

vector<int>p(N,-1);
int n,m,a,b,u,v;
cin>>n>>m>>a>>b;

//节点初始化 ,为自己的索引
for(int i=0;i<n;i++){
p[i]=i;
}
//建立并查集
for(int i=1;i<=m;i++){

cin>>u>>v;
int fu=find(p,u);
int fv=find(p,v);
if(fu!=fv){
p[fu]=fv;
}
}
int cnt=0;
//计算有几个连通量
for(int i=0;i<n;i++){
if(p[i]==i){
cnt++;
}
}
int ans=b+b+(cnt-1)*b+cnt*a;
printf("%d\n",ans);
return 0;
}

 

上一篇:66. 加一
下一篇:没有了
网友评论