把网站放到服务器上,网页设计模板html代码ie,泰安网络推广联系昔年下拉,做设计常用的素材网站【题目描述】
学校有n台计算机#xff0c;为了方便数据传输#xff0c;现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同#xff0c;因此不同的两台计算机的连接费用往往是不同的。 当然#xff0c;如果将任意两台计算机都用…【题目描述】
学校有n台计算机为了方便数据传输现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同因此不同的两台计算机的连接费用往往是不同的。 当然如果将任意两台计算机都用数据线连接费用将是相当庞大的。为了节省费用我们采用数据的间接传输手段即一台计算机可以间接的通过若干台计算机作为中转来实现与另一台计算机的连接。 现在由你负责连接这些计算机任务是使任意两台计算机都连通不管是直接的或间接的。 【输入】
第一行为整数n2≤n≤100表示计算机的数目。此后的n行每行n个整数。第x1行y列的整数表示直接连接第x台计算机和第y台计算机的费用。
【输出】
一个整数表示最小的连接费用。 【输入样例】
3 0 1 2 1 0 1 2 1 0
【输出样例】
2 【提示】
注表示连接1和22和3费用为2。 解题思路
就是最小生成树而已这里用时间复杂度是O(n^2)的算法既Prim法。 代码
#includecstdio
using namespace std;
int n,k,cost[101][101],lowcost[101],x,s;
bool ok[101];
int main()
{scanf(%d,n);for (int i1;in;i)for (int j1;jn;j) cost[i][j]23333333;//初始化无穷大for (int i1;in;i){for (int j1;jn;j){scanf(%d,cost[i][j]);//输入权值}}for (int i1;in;i) lowcost[i]cost[1][i];//记录每个点到目前集合最小花费ok[1]true;//标记为以搜过for (int i2;in;i){int k0,mins23333333;for (int j1;jn;j)if (!ok[j] lowcost[j]mins){minslowcost[j];kj;//找并且记录最小值}ok[k]true;//标记更新集合slowcost[k];//记录总值for (int j1;jn;j)if (lowcost[j]cost[k][j]) lowcost[j]cost[k][j]; //更新每个点到目前集合最小花费}printf(%d,s);
}