麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Round C APAC Test 2017 Problem C. Evaluation(拓撲排序)

2019-11-14 09:18:38
字體:
來源:轉載
供稿:網友

題目鏈接

https://code.google.com/codejam/contest/6274486/dashboard#s=p2

題意

給定若干個等式,這些等式的順序可以交換。 等式左邊的值依賴于右邊的值,要求判斷等式是否合法。

思路

我們要解決的問題就是判斷這些變量是否存在相互依賴的關系。 假如a = f(b, c)。那么a依賴于b和c,我們就從b和c分別連一條邊到a。最后要判斷的問題就是這個圖是否存在環。

細節

注意假如a = f(b, c),即a依賴于b和c,那么b和c必須要在等式左邊出現過(即b,c一定能夠被算出來)

代碼

#include <bits/stdc++.h>using namespace std;inline int in() {int x; scanf("%d", &x); return x;}#define PR(x) {cout << #x << ' ' << x << endl;}const int maxn = 100000 + 5;const int maxm = 2005;vector<int> G[maxn];int In[maxn], n, tot, musthas[maxn];vector<int> has;char s[maxm];map<string, int> mmp;void init() { for (int i = 0; i < maxn; i++) G[i].clear(); memset(In, 0, sizeof(In)); memset(musthas, 0, sizeof(musthas)); mmp.clear(); has.clear(); n = 0; tot = 0;}void pre(string s) { bool flag = false; int k = s.find("="); //create to string sv = s.substr(0, k); if (mmp.find(sv) == mmp.end()) mmp[sv] = ++n; int v = mmp[sv]; has.push_back(v); //create from string ss = ""; vector<int> tmp; for (int i = k + 1; i < s.length(); i++) { if (s[i] == '(') {flag = true; continue;} if (s[i] == ')') break; if (flag) { if (s[i] == ',' || i == s.length() - 2) { if (i == s.length() - 2 && s[i] != ',') ss += s[i]; if (mmp.find(ss) == mmp.end()) mmp[ss] = ++n; int u = mmp[ss]; musthas[u] = 1; G[u].push_back(v); In[v]++; ss = ""; } else { ss += s[i]; } } }}bool nocircle() { queue<int> q; int cnt = 0; for (int i = 1; i <= n; i++) if (!In[i]) q.push(i); while (!q.empty()) { int u = q.front(); q.pop(); cnt++; for (auto v : G[u]) { In[v]--; if (!In[v]) q.push(v); } } return cnt == n;}int main() { int T = in(); int kase = 0; while (T--) { init(); int ca = in(); while (ca--) { string s; cin >> s; pre(s); } cout << "Case #" << ++kase << ": "; bool fl = false; for (auto x : has) { if (musthas[x]) musthas[x] = 0; } for (int i = 1; i <= n; i++) { if (musthas[i]) { cout << "BAD" << endl; fl = true; break; } } if (!fl) { if (nocircle()) cout << "GOOD" << endl; else cout << "BAD" << endl; } } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕亚洲视频 | 亚洲男人的天堂在线视频 | xp123精品视频 | 久久久久久久久日本理论电影 | 中文字幕在线观看精品 | 成人羞羞网站入口 | 久久91亚洲人成电影网站 | 久久国产一二三 | 精品一区二区三区在线观看国产 | 黄色大片高清 | 特黄一区二区三区 | 欧美 国产 亚洲 卡通 综合 | 黄色片在线观看网站 | 成年人毛片视频 | 舌头伸进添的我好爽高潮网站 | 视频一区二区视频 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 欧美亚洲国产一区二区三区 | 91国内精品久久久久免费影院 | 日韩毛片网 | 羞羞视频免费入口网站 | 国产精品久久久久久影视 | 黄色片网站免费在线观看 | 色女人在线 | 在线观看免费污视频 | av手机在线免费播放 | 午夜视频国产 | 羞羞视频免费网站日本动漫 | 欧美性受xxxx人人本视频 | 久久精片 | 91av99| 久久久久久久久久久久99 | 黄色视频一级毛片 | 亚洲精品一区二区三区大胸 | 可以免费看av | 19禁国产精品福利视频 | 高清国产午夜精品久久久久久 | 爱看久久 | xxxx8| 久久久久国产成人精品亚洲午夜 | 成人做爰高潮片免费视频韩国 |