zoukankan      html  css  js  c++  java
  • Slim Span(最小生成树+枚举)

    题意:

    求生成树最长边与最短边的最小差值

    思路:

    代码:

    const int maxn=1e4+100;
    
    struct node{
    	int u,v,w;
    }edge[maxn];
    int root[maxn],n,m;
    
    bool cmp(node a,node b){
    	return a.w<b.w;
    }
    
    int Find(int x){
    	if(x!=root[x]) root[x]=Find(root[x]);
    	return root[x];
    }
    
    void init(int n){
    	for(int i=1;i<=n;i++) root[i]=i;
    }
    
    void solve(){
        while(~scanf("%d%d",&n,&m)){
        	if(!n&&!m) break;
        	init(n);
        	for(int i=1;i<=m;i++){
        		edge[i].u=read,edge[i].v=read,edge[i].w=read;
    		}
    		sort(edge+1,edge+1+m,cmp);
    		int res=inf;
    		for(int l=1,r=1;l<=m;l++){
    			bool flag=0;
    			int cnt=0;
    			init(n);
    			for(int k=l;k<=m;k++){
    				int u=edge[k].u,v=edge[k].v;
    				int fu=Find(u),fv=Find(v);
    				if(fu!=fv){
    					root[fu]=fv;
    					cnt++;
    				}
    				if(cnt==n-1){
    					flag=1;r=k;break;
    				}
    			}
    			if(flag){
    				res=min(res,edge[r].w-edge[l].w);
    				//cout<<l<<" "<<r<<"***********"<<res<<endl;
    				r=l;
    			}
    			
    		}
    		if(res==inf) puts("-1");
    		else cout<<res<<endl;
    	}
    }
    
    
  • 相关阅读:
    Mediawiki 子页链接无效的问题
    变量存储区:堆和栈
    《modern-php》
    HttpApplication处理对象与HttpModule处理模块
    Asp.Net构架(Http请求处理流程)
    Quartz.NET 3.0
    WebApi路由
    RESTful架构
    WCF
    TCP/IP协议
  • 原文地址:https://www.cnblogs.com/OvOq/p/14802269.html
Copyright © 2011-2022 走看看