习题6-7 Petri网模拟(Petri Net Simulation, ACM/ICPC World Finals 1998, UVa804)
2017-09-25 21:09
591 查看
0. 只是一道简答的模拟,但是我还是有点障碍。。。菜啊。。多思考。。
1. 结构体中有map时,不能用memset来初始化。
1. 结构体中有map时,不能用memset来初始化。
#include <iostream> #include <string> #include <vector> #include <stack> #include <queue> #include <deque> #include <set> #include <map> #include <algorithm> #include <sstream> #include <utility> #include <cstring> #include <cstdio> #include <cstdlib> #include <ctime> #include <cmath> #include <cctype> #define CLEAR(a, b) memset(a, b, sizeof(a)) #define IN() freopen("in.txt", "r", stdin) #define OUT() freopen("out.txt", "w", stdout) #define LL long long #define maxn 105 #define maxm 200005 #define mod 1000000007 #define INF 1000000007 #define eps 1e-5 #define PI 3.1415926535898 #define N 26 using namespace std; //-------------------------CHC------------------------------// int NP, NT; int p[maxn]; struct T { map<int, int> pre, next; }t[maxn]; int main() { int kase = 1; while (scanf("%d", &NP) && NP) { for (int i = 1; i <= NP; ++i) scanf("%d", &p[i]); scanf("%d", &NT); for (int i = 1; i <= NT; ++i) t[i].next.clear(), t[i].pre.clear(); int x; for (int i = 1; i <= NT; ++i) { while (scanf("%d", &x) && x) { if (x < 0) t[i].pre[-x]++; else t[i].next[x]++; } } int trans; scanf("%d", &trans); int cnt = 0; bool ok = true; while (ok) { ok = false; for (int i = 1; i <= NT; ++i) { bool can = true; for (auto j : t[i].pre) if (p[j.first] < j.second) can = false; if (!can) continue; for (auto j : t[i].pre) p[j.first] -= j.second; for (auto j : t[i].next) p[j.first] += j.second; cnt++, ok = true; if (cnt >= trans) { ok = false; break; } } } if (cnt >= trans) printf("Case %d: still live after %d transitions\n", kase++, trans); else printf("Case %d: dead after %d transitions\n", kase++, cnt); printf("Places with tokens:"); for (int i = 1; i <= NP; ++i) if (p[i]) printf(" %d (%d)", i, p[i]); puts("\n"); } return 0; }
相关文章推荐
- 习题6-8 空间结构(Spatial Structures, ACM/ICPC World Finals 1998, UVa806)
- UVa806 习题6-8 空间结构(Spatial Structures,ACM/ICPC World Finals 1998)
- 习题6-12 筛子难题(A Dicey Problem, ACM/ICPC World Finals 1999, UVa810)
- 习题7-4 切断圆环链(Cutting Chains, ACM/ICPC World Finals 2000, UVa818)
- 算法竞赛入门经典-习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994,UVa232)
- 习题6-13 电子表格计算器(Spreadsheet Calculator, ACM/ICPC World Finals 1992, UVa215)
- 习题7-1 消防车(Firetruck, ACM/ICPC World Finals 1991, UVa208)
- 习题7-3 多米诺效应(The Domino Effect, ACM/ICPC World Finals 1991, UVa211)
- 习题3-8 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)
- uva804 Petri Net Simulation [PKU2017SC](模拟)
- 例题6-1 并行程序模拟(Concurrency Simulator, ACM/ICPC World Finals 1991, UVa210)
- 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
- 习题7-2 黄金图形(Golygons, ACM/ICPC World Finals 1993, UVa225)
- 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)
- 电话圈(Calling Circles,ACM/ICPC World Finals 1996,UVA247) ——Floyd图的传递闭包
- ACM - ICPC World Finals 2013 C Surely You Congest
- Puzzle,ACM/ICPC World Finals 1993, UVa227
- 例题6-19 自组合(Self-Assembly, ACM/ICPC World Finals 2013, UVa 1572)
- ACM - ICPC World Finals 2013 D Factors
- ACM/ICPC World Finals 2013 F Low Power