1 条题解

  • 0
    @ 2025-11-30 16:28:07

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #define maxn 110
    #define INF 1000000000
    int G[maxn][maxn];
    int d[maxn], vis[maxn];
    int n;
    
    long long prim(){
    for(int i = 0;i <= n; i++)d[i] = INF, vis[i]=0;
    d[0]=0;
    long long ans = 0;
    for(int i = 0;i < n; i++){
        int u = -1, min = INF;
        for(int j = 0;j < n; j++){
            if(vis[j]==0 && d[j] < min){
                u = j;
                min = d[j];
            }
        }
        vis[u]=1;
        ans += min;
        for(int v = 0;v < n; v++){
            if(vis[v]==0 && G[u][v] != INF && d[v]>G[u][v]){
                d[v] = G[u][v];
            }
        }
    }
    return ans;
    }
    
    int main()
    {
        while(scanf("%d",&n) != EOF){
            for(int i = 0;i < n; i++){
                for(int j = 0;j < n; j++){
                    scanf("%d",&G[i][j]);
                    if(G[i][j]==0)G[i][j]=INF;
                }
            }
            printf("%lld\n",prim());
        }
    
        return 0;
    }
    

    C++ :

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int dis[101],a[101][101];
    int n,tot=0;
    void work(int);
    int main()
    {
    	memset(a,0x7f,sizeof(a));
    	cin>>n;
    	int x;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			cin>>x;
    			a[i][j]=a[j][i]=x;
    		}
    	}
    	work(1);
    	cout<<tot;
    	return 0;
    	
    }
    void work(int x)
    {
    	for(int i=1;i<=n;i++) dis[i]=a[x][i];
    	dis[x]=0;
    	for(int i=2;i<=n;i++)
    	{
    		int minx=0x7f7f7f7f,k;
    		for(int j=1;j<=n;j++)
    		{
    			if(dis[j]<minx&&dis[j]!=0)
    			{
    				minx=dis[j];
    				k=j;
    			}
    		}
    		tot+=dis[k];
    		dis[k]=0;
    		for(int j=1;j<=n;j++)
    		{
    			if(dis[j]>a[k][j]) dis[j]=a[k][j];
    		}
    	}
    }
    
    • 1

    信息

    ID
    1466
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者