zoukankan      html  css  js  c++  java
  • HDU 4514

    真是神奇,G++TLE,C++500MS。。。

    判环有一个图论知识就是,m>=n时必有环。如果以m的范围建图,会MLE。

    然后,利用拓扑排序再来判定是否有环,因为有些景点可能是孤立的。同时,在拓扑时就可以DP求最长路了。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define LL __int64
    
    using namespace std;
    
    struct Edge{
    	int u,v,c;
    	int next;
    }edge[200005];
    bool vis[100005];
    int head[100005];
    int deg[100005],tot,cnt;
    int stack[100005],st;
    int dp[100005];
    int ans;
    
    void addedge(int u,int v,int c){
    	edge[tot].u=u;
    	edge[tot].v=v;
    	edge[tot].c=c;
    	edge[tot].next=head[u];
    	head[u]=tot++;
    }
    
    void slove(){
    	int u,v;
    	while(st>0){
    		u=stack[--st];
    		vis[u]=true;
    		cnt++;
    		for(int e=head[u];e!=-1;e=edge[e].next){
    			v=edge[e].v;
    			if(!vis[v]){
    				ans=max(ans,dp[v]+dp[u]+edge[e].c);
    				dp[v]=max(dp[v],dp[u]+edge[e].c);
    				deg[v]--;
    				if(deg[v]==1)
    				stack[st++]=v;
    			}
    		}
    	}
    }
    
    int main(){
    	int n,m,u,v,c;
    	while(scanf("%d%d",&n,&m)!=EOF){
    		tot=st=cnt=0;
    		ans=0;
    		for(int i=1;i<=n;i++){
    			head[i]=-1; vis[i]=false;
    			deg[i]=dp[i]=0;
    		}
    		if(m>=n){
    			for(int i=0;i<m;i++)
    			scanf("%d%d%d",&u,&v,&c);
    			printf("YES
    ");
    			continue;
    		}
    		for(int i=0;i<m;i++){
    			scanf("%d%d%d",&u,&v,&c);
    			addedge(u,v,c);
    			addedge(v,u,c);
    			deg[u]++;
    			deg[v]++;
    		}
    		for(int i=1;i<=n;i++){
    			if(deg[i]==0) cnt++;
    			else if(deg[i]==1){
    				stack[st++]=i;
    			//	vis[i]=true;
    			}
    		}
    		slove();
    		if(cnt!=n)
    		printf("YES
    ");
    		else printf("%d
    ",ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Spring容器启动前传——web应用
    三方依赖bean初始化导致项目启动失败问题
    一个静态内部类单例引发的思考
    依赖传递
    kafka
    设置旋转元素的基点位置
    keep-alive 的 Props && 钩子函数
    css处理文字: 单行居中 多行居左
    localStorage 存 取 删
    for循环中暂停,async await
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4368246.html
Copyright © 2011-2022 走看看