hihoCoder挑战赛12 永恒游戏 模拟
来源:互联网 发布:mac 安装fontawesome 编辑:程序博客网 时间:2024/05/17 01:53
时间限制:20000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
3 31 2 10 11 22 0
- 样例输出
INF
描述
很久很久以前,当Rowdark还是个善良的魔法师时,他在一个n个点m条边的无向图上玩一个游戏。
开始时他在一些点上放些石子。每次Rowdark选择一个点A,要求点A上的石子数大于等于邻居点个数。然后对A的每个邻居B,将A上的一个石子移到B上。如果不能选出这样的点A,那么游戏结束。Rowdark想知道这个游戏会不会无限循环。为了使问题更简单,你只需要求出是否10万轮后游戏仍然继续。
输入
第一行两个整数n和m(1 ≤ n ≤ 200)。
第二行n个整数a0, a1 ... an-1表示每个点上的石子个数(0 ≤ ai ≤ 109)。
接下来m行,每行两个数x和y (x ≠ y, 0 ≤ x, y ≤ n - 1),表示在x和y之间有一条边。题目保证没有重边,且任意一个点都有邻居。
输出
如果Rowdark能玩超过100000轮,输出“INF”(不带引号),否则输出最多步数。
#include <iostream>#include <vector>using namespace std;int n,m;int choose(vector<int>& shitou, vector<vector<bool>> &map, vector<int> &nei) { for(int i = 0; i < n; ++i) { if(shitou[i] >= nei[i]) { for(int j = 0; j < n; ++j) { if(j == i) continue; if(map[i][j] == true) { shitou[j]++; shitou[i]--; } } return i; } } return -1;}int main() { cin>>n>>m; int MAX = 100000; int cases = 0; int x = 0; int xx, yy; int num = -1; bool flag = true; vector<int> shitou; vector<vector<bool>> map(n,vector<bool>(n,false)); vector<int> nei(n, 0); for(int i = 1; i <= n; ++i) { cin>>x; shitou.push_back(x); } for(int i = 1; i <= m; ++i) { cin>>xx>>yy; map[xx][yy] = true; map[yy][xx] = true; } for(int i = 0; i < n; ++i) { //calculate neighbor's geshu for(int j = 0; j < n; ++j) { if(j == i) continue; if(map[i][j] == true) { nei[i]++; } } } for(int i = 1; i <= MAX; ++i) { num = choose(shitou, map, nei); if(num == -1) { flag = false; break; } cases++; } if(flag == false) { cout<<cases<<endl; }else { cout<<"INF"<<endl; } return 0;}
0 0
- hihoCoder挑战赛12 永恒游戏 模拟
- HihoCoder 挑战赛12 C #1179 : 永恒游戏(枚举)
- hihoCoder挑战赛C题——永恒游戏
- hihoCoder挑战赛12 顺子 模拟
- hihoCoder挑战赛11 益智游戏
- hihoCoder挑战赛12 ABC
- hihoCoder挑战赛12 顺子(hihocoder 1177)
- Hihocoder 挑战赛
- hihoCoder挑战赛12 计数 打表
- hihoCoder挑战赛14-1223
- hihoCoder挑战赛14-1224
- hihoCoder挑战赛20
- hihoCoder挑战赛20 题解
- hihoCoder挑战赛 one
- hihoCoder挑战赛22 笔记
- hihocoder挑战赛20小记
- hihoCoder挑战赛29
- hihoCoder挑战赛31 题解
- jsp实现分页技巧
- dedecms 修改默认模板
- XUL的功能
- 基于Flume的美团日志收集系统
- Hibernate 事务管理
- hihoCoder挑战赛12 永恒游戏 模拟
- TextField控件、PasswordField控件、TextArea控件、Toggle 控件、ToolBar控件
- Linux系统编程——进程同步与互斥:POSIX有名信号量
- phaser续 接上
- 快速排序,c++ 模板技术表述,完全兼容标准库!!!
- 开始刷leetcode day41:Implement strStr()
- 游戏开发策划的原则
- 每天进步一点点——linux——ls
- c++学习整理