标签:miss self another math logic har family oid cti
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 38918 | Accepted: 15751 |
Description
Input
Output
Sample Input
4 0 4 9 21 4 0 8 17 9 8 0 16 21 17 16 0
Sample Output
28
简单的最小生成树问题。
。题意要你求得最短的距离。
。1A水过
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<queue> #include<cmath> using namespace std; const int INF = 0x3f3f3f3f; int map[105][105];//地图 int lowlen[105];//最短距离 int vist[105];//prim中用于看节点是否进树 int ans; int n; void init() { for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) scanf("%d", &map[i][j]); memset(vist, 0, sizeof(vist)); memset(lowlen, 0, sizeof(lowlen)); } void prim()//prim算法 { int temp; ans = 0; for(int i=1; i<=n; i++) lowlen[i] = map[1][i]; vist[1] = -1; for(int i=2; i<=n; i++) { temp = INF; int k =0; for(int j=1; j<=n; j++) { if( vist[j]!=-1 && temp>lowlen[j] ) { temp = lowlen[j]; k = j; } } vist[k] = -1; ans += temp; for(int j=1; j<=n; j++) { if(vist[j]!=-1 && lowlen[j]>map[k][j]) { lowlen[j] = map[k][j]; } } } printf("%d\n", ans); } int main() { while(scanf("%d", &n)==1) { init(); prim(); } return 0; }
POJ 1258:Agri-Net(最小生成树&&prim)
标签:miss self another math logic har family oid cti
原文地址:http://www.cnblogs.com/llguanli/p/6789158.html