C++课后习题训练记录Day148
1.练习项目 问题描述蓝桥公司招聘了一个推销员。他大部分时间都在不同的城市之间旅行。他决定买一辆新车来帮助他的工作但他必须决定新车油箱的容量。假设这辆新车每公里耗油一升。每个城市至少有一个加油站推销员可以在那里给油箱加油但城市之间的道路上没有加油站。 给出城市及其之间道路的描述找出所需油箱的最小容量以便推销员能够至少以一种方式在任何一对城市之间旅行。输入格式输入的第一行包含表示测试用例数的 T。每个测试用例的第一行包含两个整数N 和 M 其中 N 为城市数量M 为道路数量。以下 M 行都包含三个整数X,Y,C其中 C 是城市 X 和城市 Y 之间的长度单位为公里。道路可以双向使用。题目保证每对城市之间最多有一条道路相连并且可以使用给定的道路在任意一对城市之间旅行。输出格式对于每个测试用例打印一行整数表示油箱所需的最小容量。2.选择课程在蓝桥云课中选择题库选择题号3322并开始练习。3.开始练习1Kruskal算法#includebits/stdc.husing namespace std;using ll long long;const int N1e510,inf1e9;struct Edge{ll x,y,c;bool operator (const Edge u)const{return cu.c;}};int pre[N],n,m;int root(int x){return pre[x](pre[x]x?x:root(pre[x]));}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cint;while(t--){cinnm;vectorEdgees;for(int i1;im;i){ll x,y,c;cinxyc;es.push_back({x,y,c});}sort(es.begin(),es.end());for(int i1;in;i)pre[i]i;ll ans0;for(const autot:es){ll xt.x,yt.y,ct.c;if(root(x)root(y))continue;ansmax(ans,c);pre[root(x)]root(y);}coutans\n;}return 0;}2Prim算法#includebits/stdc.husing namespace std;using ll long long;const int N1e510,inf1e9;struct Edge{ll x,c;bool operator (const Edge u)const{return cu.c;}};vectorEdgeg[N];ll d[N],n,m;ll prim(){priority_queueEdgepq;pq.push({1,d[1]0});bitsetNvis;ll res0;while(pq.size()){int xpq.top().x;pq.pop();if(vis[x])continue;vis[x]true;resmax(res,d[x]);for(const autot:g[x]){ll yt.x,wt.c;if(wd[y])pq.push({y,d[y]w});}}return res;}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cint;while(t--){cinnm;for(int i1;in;i)g[i].clear(),d[i]inf;for(int i1;im;i){ll x,y,c;cinxyc;g[x].push_back({y,c});g[y].push_back({x,c});}coutprim()\n;}return 0;}3检验结果对此代码进行检验检验后无报错提交此代码判题结果为正确100分。4练习心得注意每段代码末尾的分号是否存在 如不存在则需即使补充输入法 是否切换 为英语模式语法是否错误。