zoukankan      html  css  js  c++  java
  • poj1192 最优连通子集

    额。是单整点集。一开始没看到。。

    还算好做,树形dp。

    /**
     * Problem:POJ1192
     * Author:Shun Yao
     * Time:2013.5.20
     * Result:Accepted
     * Memo:DP
     */
    
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    
    long abs(long x) {
    	return x < 0 ? -x : x;
    }
    
    const long Maxn = 1005;
    
    long n, ans, now, f[Maxn];
    char visited[Maxn];
    
    class pnode {
    public:
    	long x, y, c;
    	pnode() {}
    	~pnode() {}
    } p[Maxn];
    
    class gnode {
    public:
    	long v;
    	gnode *next;
    	gnode() {}
    	~gnode() {}
    	gnode(long V, gnode *ne):v(V), next(ne) {}
    } *g[Maxn];
    
    void add(long x, long y) {
    	g[x] = new gnode(y, g[x]);
    	g[y] = new gnode(x, g[y]);
    }
    
    void DP(long x) {
    	visited[x] = 1;
    	f[x] = p[x].c;
    	for (gnode *e = g[x]; e; e = e->next) {
    		if (!visited[e->v]) {
    			DP(e->v);
    			if (f[e->v] > 0)
    				f[x] += f[e->v];
    		}
    	}
    	if (now < f[x])
    		now = f[x];
    }
    
    int main() {
    	static long i, j;
    	freopen("poj1192.in", "r", stdin);
    	freopen("poj1192.out", "w", stdout);
    	scanf("%ld", &n);
    	for (i = 1; i <= n; ++i) {
    		g[i] = 0;
    		scanf("%ld%ld%ld", &p[i].x, &p[i].y, &p[i].c);
    		for (j = 1; j < i; ++j)
    			if (abs(p[i].x - p[j].x) + abs(p[i].y - p[j].y) == 1)
    				add(i, j);
    	}
    	memset(visited, 0, sizeof visited);
    	for (i = 1; i <= n; ++i)
    		if (!visited[i]) {
    			now = 0;
    			DP(i);
    			ans += now;
    		}
    	printf("%ld", ans);
    	fclose(stdin);
    	fclose(stdout);
    	return 0;
    }
    


    作者:HSUPPR
    出处:http://www.cnblogs.com/hsuppr/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    Python爬虫学习01
    Python学习Day02
    JavaScript学习笔记01
    Python学习Day01
    MarkDown实例代码
    MarkDwon的使用方法
    (转)探究requestDisallowInterceptTouchEvent失效的原因
    JNI字符串转字节数组指针方法
    justfun
    dsad
  • 原文地址:https://www.cnblogs.com/hsuppr/p/3087971.html
Copyright © 2011-2022 走看看