1 条题解

  • 0
    @ 2025-9-10 9:00:36

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int g[305][305];
    int minn[305]; 
    int start[305];  
    int u[305];  
    int n,e,total;
    
    void prim(){
    	int i,j,k;
        memset(minn,0x7f,sizeof(minn));
        minn[1] = 0; start[1]=0; 
        memset(u,1,sizeof(u));  
    	for (i = 1; i <= n; i++)  
        {
            k = 0;
            for (j = 1; j <= n; j++) 
                if (u[j] && (minn[j] < minn[k]))
                    k = j;
            u[k] = 0;                    
    		total=total+minn[k];
            for (j = 1; j <= n; j++)
                if (u[j] &&(g[k][j]!=0) && (g[k][j] < minn[j]))
    				{	minn[j] = g[k][j];  
    					start[j]=k; 
    				}
        } 
    }
    
    int main(){
    	int i,j,w,t=0;
    	scanf("%d%d",&n,&e);
        while (e>0) {
    		scanf("%d%d%d",&i,&j,&w);
    		g[i][j]=g[j][i]=w;
    		e--;
    	}
    	prim();
        for (i = 1; i <= n; i++){ 
    		if (minn[i]>t) t=minn[i];
    	}
    	printf("%d %d\n",n-1,t);
        return 0;
    }
    
    
    • 1

    信息

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