UVA 11748 - Rigging Elections

option=com_onlinejudge&Itemid=8&page=show_problem&category=599&problem=2848&mosmsg=Submission+received+with+ID+14103876" target="_blank" style="">题目链接

题意: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\n", dfs(c) == n ? "yes" : "no");
}
return 0;
}

UVA 11748 - Rigging Elections(dfs)的更多相关文章

  1. UVA 572 -- Oil Deposits(DFS求连通块+种子填充算法)

    UVA 572 -- Oil Deposits(DFS求连通块) 图也有DFS和BFS遍历,由于DFS更好写,所以一般用DFS寻找连通块. 下述代码用一个二重循环来找到当前格子的相邻8个格子,也可用常 ...

  2. uva :10123 - No Tipping(dfs + 几何力矩 )

    option=com_onlinejudge&Itemid=8&page=show_problem&category=109&problem=1064&mosm ...

  3. UVA 10318 Security Panel(DFS剪枝 + 状压 + 思维)题解

    题意:给一个r*c的矩阵开关(初始全打开的),每次按下一个开关都会改变3*3范围内的有*的地方的状态,问你最少几步能让开关全闭上,按升序输出按哪些按钮 思路:每个按钮至多按一下,按按钮的顺序和结果无关 ...

  4. UVa 1343 旋转游戏(dfs+IDA*)

    https://vjudge.net/problem/UVA-1343 题意:如图所示,一共有8个1,8个2和8个3,如何以最少的移动来使得中间8个格子都为同一个数. 思路:状态空间搜索问题. 用ID ...

  5. UVa 11212 编辑书稿(dfs+IDA*)

    https://vjudge.net/problem/UVA-11212 题意:给出n个自然段组成的文章,将他们排列成1,2...,n.每次只能剪切一段连续的自然段,粘贴时按照顺序粘贴. 思路:状态空 ...

  6. uva 10160 Servicing Stations(DFS+剪枝)

    Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The ...

  7. Uva 1103 古代象形符号(dfs求连通块, floodfill, 进制转换)

    题意: 给定一个H行W列的字符矩阵(H<200, W < 50), 输入的是一个十六进制字符, 代表一行四个相邻的二进制, 1代表像素, 0代表没有像素. 然后要求判断输入的是以下哪些图形 ...

  8. UVA - 12113 Overlapping Squares(dfs+回溯)

    题目: 给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出这样的形状. 思路: dfs纸的张数,每一张中枚举这张纸左上角这个点的位置,暴力解题就可以了. 这个题的覆盖太 ...

  9. UVA - 572 Oil Deposits(dfs)

    题意:求连通块个数. 分析:dfs. #include<cstdio> #include<cstring> #include<cstdlib> #include&l ...

随机推荐

  1. Python学习笔记之默认参数

    函数定义时 参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. def test(a,b,c=1,*d,**e) pass

  2. RabbitMQ 为什么需要信道?为什么不是TCP直接通信?

    交换器和队列的关系 1. 交换器是通过路由键和队列绑定在一起的,如果消息拥有的“路由键”跟队列和交换器的“路由键”匹配,那么消息就会被路由到该绑定的队列当中去 2. 也就是说,消息到队列的过程中,消息 ...

  3. PAT1021Deepset Root

    题意: 连通则输出最深点.第一步找某个点的最深的,然后从这个最深的点查找其他最深点,做并集. 不连通则输出连通图个数. #include<iostream> #include<cst ...

  4. Jmeter在windows上安装和环境配置

    一.Jmeter简单介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具.它可以用于测试静态和动态资源,例如静态文件.Java小服务程序.CGI 脚本.Java 对象.数 ...

  5. Microsoft SQL Server Transact-SQL

    Microsoft SQL Server Transact-SQL 1.SQL 1.1数据定义语言(DDL) create 创建数据库或数据库对象:alter 修改数据库或数据库对象:drop 删除数 ...

  6. 2018最新Python小白入门教程,30天学会Python

    随着Python的技术的流行,Python在为人们带来工作与生活上带来了很多的便捷,因为Python简单,学起来快,也是不少新手程序员入门的首选语言.作为一名Python爱好者,我也想跟大家分享分享我 ...

  7. SQL删除重复数据(根据多个字段),pandas的nan存入数据库报错

    delete from M_FACTOR_DATA_TEST a where (a.factor_id,a.data_date,a.stock_code) in (select factor_id,d ...

  8. Jquery 上一步、下一步及提交

    111 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  9. 如何使用crash分析vmcore - 之基础思路case1

    如何使用crash分析vmcore - 之基础思路case1 dmesg查看内核日志 [2493382.671020] systemd-shutdown[1]: Sending SIGKILL to ...

  10. .Net Core2.2 + EF Core + DI,三层框架项目搭建教程

    笔记: 近两年.Net Core发展的很快,目前最新版为3.0预览版,之前在网上买了一本1.1版书籍都还没来得及看呢,估计现在拿出来看也毫无意义了.已多年.net工作经验,看书不如直接实际上手来得快, ...