1 条题解
-
0
C :
#include<stdio.h> int main() { int n,i,j,ii,iii,go,a[100][100],sum,b[1000],bb[1000],min,minnum; scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); b[1]=1; sum=0; for(i=1;i<n;i++) { min=minnum=999999; for(ii=1;ii<=i;ii++) for(j=1;j<=n;j++) { if(j==b[ii]) continue; go=1; for(iii=1;iii<=i;iii++) { if(b[iii]==j) go=0; } if(go==0) continue; if(a[b[ii]][j]<min&&a[b[ii]][j]!=0) { min=a[b[ii]][j]; minnum=j; } } b[i+1]=minnum; sum+=min; } printf("%d\n",sum); return 0; }
C++ :
#include "stdio.h" #include "string.h" #include <algorithm> using namespace std; struct number { int s,e,w; }num[110]; int set[51]; bool cmp(number a,number b) { return a.w<b.w; } int seeks(int i) { while(set[i]>0) { i=set[i]; } return i; } int main(int argc, char* argv[]) { int n,i,j,sum,v1,v2,a,k; while(~scanf("%d",&n)) { memset(num,0,sizeof(num)); k=1; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&a); if(a!=0) { num[k].w=a; num[k].s=i; num[k++].e=j; } } } memset(set,0,sizeof(set)); sort(num+1,num+k+1,cmp); i=1;j=1;sum=0; while(i<k&&j<=n) { v1=seeks(num[i].s); v2=seeks(num[i].e); if(v1!=v2) { set[v1]=v2; sum+=num[i].w; j++; } i++; } printf("%d\n",sum); } return 0; }
Java :
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int[][] weight = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { weight[i][j] = input.nextInt(); if (weight[i][j] == 0) weight[i][j] = Integer.MAX_VALUE; } } minTree mintree = new minTree(n); mintree.prim(weight, 0); } } class minTree { int vernum; public minTree(int n) { this.vernum = n; } public void prim(int[][] weight, int v) { int[] visited = new int[vernum]; int sum = 0; int h1 = -1; int h2 = -1; visited[v] = 1; for (int k = 1; k < vernum; k++) { int min = Integer.MAX_VALUE; for (int i = 0; i < vernum; i++) { for (int j = 0; j < vernum; j++) { if (visited[i] == 1 && visited[j] == 0 && weight[i][j] < min) { min = weight[i][j]; h1 = i; h2 = j; } } } visited[h2] = 1; sum += min; } System.out.println(sum); } }
- 1
信息
- ID
- 3248
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者