鉴于端午节让我迷失了三天,今天痛定思痛,不换工作之前就不玩dota了,谢幕战很高兴,土猫劣势翻盘,未来如果有时间就来两把炉石吧。先把两道新的题做完。然后改简历,明天带书去单位摸鱼。加油加油!!!要开始准备面试啦。
卡码网53题
通过prim算法整完了。
1、选距离生成树最近的节点(第一步这里需要研究一下,第20行,需要最近的节点)
2、最近节点加入生成树
3、更新非生成树节点到生成树的距离(更新minDist数组)
cpp
#include<vector>
#include<iostream>
#include<climits>
using namespace::std;
int main(){
int V,E;
cin >> V >> E;
vector<vector<int>>grid(V+1,vector<int>(V+1,INT_MAX));
for(int i = 0; i < E;i++){
int a,b,c;
cin >> a >> b >> c;
grid[a][b] = c;
grid[b][a] = c;
}
vector<int>minDist(V+1,INT_MAX);
vector<bool>visited(V+1,0);
for(int i = 1;i < V+1 ;i++){
int cur = 1;
for(int j = 1; j < V + 1;j++){
if(!visited[j] && minDist[j] < minDist[cur]){
cur = j;
}
}
visited[cur] = 1;
for(int j = 1; j < V+1;j++){
if(!visited[j] && grid[cur][j] < minDist[j]){
minDist[j] = grid[cur][j];
}
}
}
int sum = 0;
for(int i = 2;i < V+1 ;i++){
sum += minDist[i];
// cout <<i<< " : "<< minDist[i] << endl;
}
cout << sum << endl;
return 0;
}
还是有点懒,只完成了一道题。还有一个dijstra的题需要做。明天继续吧