将每个translation的输入和输出place全部记录下来,模拟即可,当所有translation都不能工作时,就说明dead了。

AC代码:

#include<cstdio>
#include<vector>
using namespace std;const int maxn = 100 + 5;struct node{vector<int> in, out;
}tran[maxn];int p[maxn]; //the number of tokens in  all placesint main(){int pn, tn, nf, kase = 1;while(scanf("%d", &pn) == 1 && pn){for(int i = 1; i <= pn; ++i){scanf("%d", &p[i]);}scanf("%d", &tn);for(int i = 1; i <= tn; ++i){int x;while(scanf("%d", &x) == 1 && x){if(x < 0) tran[i].in.push_back(-x);else tran[i].out.push_back(x);}}scanf("%d",&nf);bool dead = 0;int h;for(h = 0; h < nf; ++h){int cnt = 0;for(int i = 1; i <= tn; ++i){bool flag = 1;vector<int> &in = tran[i].in, &out = tran[i].out;for(int j = 0; j < in.size(); ++j){if(p[in[j]] == 0) {flag = 0;while(j) p[in[--j]]++; //break;}else p[in[j]]--;}if(!flag) ++cnt;else {for(int k = 0; k < out.size(); ++k) p[out[k]]++;break;}}if(cnt == tn) {dead = 1;break;}}if(dead) printf("Case %d: dead after %d transitions\n", kase++, h);else printf("Case %d: still live after %d transitions\n", kase++, nf);printf("Places with tokens:");for(int i = 1; i <= pn ; ++i){if(p[i]) printf(" %d (%d)", i, p[i]);}printf("\n\n");for(int i = 1; i <= tn ; ++i) {tran[i].in.clear();tran[i].out.clear();}}return 0;
}

如有不当之处欢迎指出!

转载于:https://www.cnblogs.com/flyawayl/p/8305466.html

UVA-804 模拟相关推荐

  1. 【习题 6-7 UVA - 804】Petri Net Simulation

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟就好 [代码] /* 1.Shoud it use long long ? 2.Have you ever test sever ...

  2. UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum

    此题很容易想到会出现环,那么就可以想到用map来判重,但是此题还有一种更加优越的所需空间复杂度为o(1)的算法 . #include<cstdio> #include<iostrea ...

  3. UVa 400 模拟vector

    背景:多久没有一次ac过了,要提升一次ac的几率啊!这对比赛是很重要的. 思路:这个题主要是更加熟悉了下vector,然后就是一些格式的问题,构造即可.主要感受还是一定要把思路想好再写题! #incl ...

  4. Extraordinarily Tired Students, UVA - 12108(模拟)

    #include<iostream> #include<cstring> #include<cstdio> using namespace std; int top ...

  5. UVA804 Petri网模拟 Petri Net Simulation

    知识点:模拟 这道题就是个语文题,和数据结构算法啥的都不占边,暴力模拟就行了,而且还是感觉刘汝佳的翻译不是很明白,我是上网上搜了题意,然后直接以变迁作为下标来模拟就行了, 题目翻译:UVA 804 P ...

  6. 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)

    文章目录 说明 习题 习6-1 UVA 673 平衡的括号 习6-2 UVA 712 S - 树 习6-3 UVA 536 二叉树重建 习6-4 UVA 439 骑士的移动 习6-5 UVA 1600 ...

  7. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  8. UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟

    题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求 ...

  9. UVA 1156 - Pixel Shuffle(模拟+置换)

    UVA 1156 - Pixel Shuffle 题目链接 题意:依据题目中的变换方式,给定一串变换方式,问须要运行几次才干回复原图像 思路:这题恶心的一比,先模拟求出一次变换后的相应的矩阵,然后对该 ...

  10. UVA - 1198 POJ - 1612 The Geodetic Set Problem (floyd+set+模拟)

    题目链接:http://poj.org/problem?id=1612点击打开链接 The Geodetic Set Problem Time Limit: 1000MS   Memory Limit ...

最新文章

  1. python装饰器作用-Python 装饰器的作用
  2. MIT自然语言处理第三讲:概率语言模型
  3. OO_Unit2_多线程电梯
  4. Java substring() 方法
  5. selenium-05-常见问题
  6. 如何在Go中使用切片容量和长度
  7. 随想录(rtos和一般os的区别)
  8. 通过文件锁 Lockfile/flock 让脚本单实例运行
  9. 阐述沙盒游戏的历史和理论
  10. 加油站收银系统 Java_加油站也能用收银系统吗?
  11. pdf怎么移除权限口令,忘记pdf密码如何找回?
  12. 自制ArduinoUno R3开发板,烧写bootloader
  13. WEB前端缓存解决方案
  14. JS中promise是什么?
  15. 爬虫需谨慎,你不知道的爬虫与反爬虫套路!
  16. Mac笔记本外接显示器竖屏设置
  17. 选择香港虚拟主机需要注意的,如何选购优质的虚拟主机
  18. 【Kay】Java判断正数和负数个数
  19. ogr2ogr导入导出数据。
  20. mavens使用阿里云国内私服下载

热门文章

  1. day36 03-Hibernate检索方式:排序、参数绑定、投影查询
  2. 5 Handler与子线程
  3. 36个引人注目JQuery导航菜单
  4. c 函数多次声明_【C语言】- static和extern关键字 - 对函数的作用!
  5. 计算机科学速成视频35,计算机科学速成课30:万维网【视频】
  6. 成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程
  7. 技术解密|阿里云多媒体 AI 团队是凭借什么拿下 CVPR2021 5冠1亚的?
  8. 阿里技术大牛最爱的“闲书”,你看过多少?
  9. 马云启动“NASA”计划 为未来20年愿景研发核心科技
  10. 《糖豆人:终极淘汰赛》:如何打造最难关卡「水涨爬高」