rwkj 1505 poj 1258 10.1.5.253 1505

#include <iostream>// poj 1258 10.1.5.253 1505
using namespace std;
#define N 105 // 顶点的最大个数 (多写
int a[N][N],low[N],n,ans;
int min(int x,int y)
{ return x<y?x:y; }

void prim(int u0)
{
int i,j,m,k;
ans=0; //
for (i=1;i<n;i++)
low[i]=a[u0][i]; //
low[u0]=-1;
for (i=1;i<n;i++) //循环n-1次 依次加入n-1个顶点
{
m=1<<20;
for (j=0;j<n;j++) //找一个最小的的边
if (low[j]!=-1&&low[j]<m)
{ m=low[j]; k=j; }
ans+=m; //
low[k]=-1;
for (j=0;j<n;j++) //
if (low[j]!=-1)
low[j]=min(low[j],a[k][j]);
}
}

int main()
{
int i,j;
while(cin>>n&&n>=3)
{
for (i=0;i<n;i++) //邻接矩阵
for (j=0;j<n;j++)
cin>>a[i][j];
prim(0); // 从0开始
cout<<ans<<endl;
}
return 0;
}

rwkj 1505 poj 1258 10.1.5.253 1505,布布扣,bubuko.com

时间: 2024-10-07 16:32:39

rwkj 1505 poj 1258 10.1.5.253 1505的相关文章

(RQoj 15 采药------rwkj 10.1.5.253 1447) 记忆式搜索 2

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M,;int max(int x,int y) { return x>y?x:y; }int f(int x,int y){ int t; if (dp[x][y]!=-1) return dp[x][y]; if ( x==M+1 || y==0 ) return dp[x][y]=0; e

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 1

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M;int max(int x,int y){ return x>y?x:y; } void f( ){ int i,j; for (i=1; i<=M; i++) for (j=0;j<=T; j++) { if (i==0) dp[i][j]=0; else dp[i][j]=

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 2

70 371 10069 11 2 #include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M;int max(int x,int y){ return x>y?x:y; }void f( ){ int i,j; for (i=M; i>=1; i--) for (j=0;j<=T; j++) { if (i==M+1) dp[i][j

(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 2

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M,;int max(int x,int y) { return x>y?x:y; }int f(int x,int y){ int t; if ( x==M+1 || y==0 ) return dp[x][y]=0; else { t=f(x+1,y); if ( y>=w[x] )

(RQoj 15 采药------rwkj 10.1.5.253 1447) 动态规划 DP 3

#include <iostream>#include <string.h>using namespace std;int dp[1005], w[105],v[105],T,M;int max(int x,int y) { return x>y?x:y; }void f( ){ int i,j; for (i=1; i<=M; i++) for (j=T;j>=0; j--) if (j>=w[i]) dp[j]=max(dp[j],dp[j-w[i]]+

(RQoj 15 采药------rwkj 10.1.5.253 1447) 网上

#include<stdio.h>int max(int x,int y){ int z; if (x>y) z=x; else z=y; return z;} int max(int a,int b){ return a > b ? a : b;} int main(){ int time[100],value[100]; int f[1000]={0}; int t,m,i,j; int max(int x,int y);//.....比较两个数的大小. scanf("

(RQoj 15采药------rwkj 10.1.5.253 1447) 记忆式搜索 1

#include <iostream>using namespace std;int dp[105][1005],w[105],v[105] ; int max(int a,int b) { return a > b ? a : b; }int f(int x,int y){ int t ; if(dp[x][y]!=-1) return dp[x][y] ; if(x==0 || y==0 ) return dp[x][y]=0 ; else { t=f(x-1,y) ; if(y&g

(RQoj 15 采药------rwkj 10.1.5.253 1447) 递归 1

#include <iostream>using namespace std;int dp[105][1005],w[105],v[105] ; int max(int a,int b) { return a > b ? a : b; }int f(int x,int y){ int t ; if(dp[x][y]!=-1) return dp[x][y] ; if(x==0 || y==0 ) return dp[x][y]=0 ; else { t=f(x-1,y) ; if(y&g

各种最小生成树。 HDU 1863 HDU 1301 POJ 1258

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18811    Accepted Submission(s): 7981 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出