zoukankan      html  css  js  c++  java
  • UVA 11748

    UVA 11748 - Rigging Elections

    题目链接

    题意:n个人选举,给出m个人的投票人对于每一个人的优先级,如今你想让第c个人赢。问能不能

    思路:对于两个人上场,假设a能赢b,就建一条a->b的边,然后问题事实上就变成是否能以c为根节点是一棵树,直接dfs一遍就可以

    代码:

    #include <cstdio>
    #include <cstring>
    #include <vector>
    using namespace std;
    
    const int N = 105;
    
    int n, m, c, a[N][N], vis[N];
    vector<int> g[N];
    
    int dfs(int u) {
    	vis[u] = 1;
    	int ans = 1;
    	for (int i = 0; i < g[u].size(); i++) if (!vis[g[u][i]])
    		ans += dfs(g[u][i]);
    	return ans;
    }
    
    int main() {
    	while (~scanf("%d%d%d", &n, &m, &c) && n) {
    		int u;
    		for (int i = 1; i <= n; i++)
    			g[i].clear();
    		for (int i = 1; i <= m; i++)
    			for (int j = 1; j <= n; j++) {
    				scanf("%d", &u);
    				a[i][u] = j;
    			}
    		for (int i = 1; i <= n; i++) {
    			for (int j = i + 1; j <= n; j++) {
    				int cnt = 0;
    				for (int k = 1; k <= m; k++) {
    					if (a[k][i] < a[k][j])
    						cnt++;
    					if (cnt > m / 2) break;
    				}
    				if (cnt > m / 2) g[i].push_back(j);
    				else g[j].push_back(i);
    			}
    		}
    		memset(vis, 0, sizeof(vis));
    		printf("%s
    ", dfs(c) == n ? "yes" : "no");
    	}
    	return 0;
    }


  • 相关阅读:
    iOS layoutSubviews 什么时候会被调用
    view
    NSDictionaryOfVariableBindings
    获取相册中得图片
    相机
    给定文字测量它的大小
    git
    单例的创建
    物理引擎简介——Cocos2d-x学习历程(十三)
    场景切换特效Transition——Cocos2d-x学习历程(十二)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6915687.html
Copyright © 2011-2022 走看看