zoj 1586 QS Network (Prim)

来源:互联网 发布:h是几g网络 编辑:程序博客网 时间:2024/06/05 09:12
#include <iostream>#include <cstring>using namespace std;const int MAXN = 1010;const int INF = 10000010;int Edge[MAXN][MAXN];int lowcost[MAXN];int adapter[MAXN];int n;void Inite(){int i, j;cin>>n;memset(adapter, 0, sizeof(adapter));for (i = 0; i < n; ++i)cin>>adapter[i];for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){cin>>Edge[i][j];if(i == j)Edge[i][j] = INF;elseEdge[i][j] += (adapter[i] + adapter[j]);}}memset(lowcost, 0, sizeof(lowcost));}void Prim(){int i, j;int sum = 0;for (i = 0; i < n; ++i){lowcost[i] = Edge[0][i];}lowcost[0] = -1;for(i = 1; i < n; ++i){int MIN = INF, v;for (j = 0; j < n; ++j){if(lowcost[j] != -1 && MIN > lowcost[j]){v = j;MIN = lowcost[j];}}sum += MIN;lowcost[v] = -1;for (j = 0; j < n; ++j){if(lowcost[j] != -1 && lowcost[j] > Edge[v][j])lowcost[j] = Edge[v][j];}}cout<<sum<<endl;}int main(){int T;cin>>T;while(T--){Inite();Prim();}return 0;}

原创粉丝点击