日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HihoCoder - 1174 拓扑排序·一

發(fā)布時(shí)間:2024/4/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HihoCoder - 1174 拓扑排序·一 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于今天上課的老師講的特別無聊,小Hi和小Ho偷偷地聊了起來。

小Ho:小Hi,你這學(xué)期有選什么課么?

小Hi:挺多的,比如XXX1,XXX2還有XXX3。本來想選YYY2的,但是好像沒有先選過YYY1,不能選YYY2。

小Ho:先修課程真是個(gè)麻煩的東西呢。

小Hi:沒錯(cuò)呢。好多課程都有先修課程,每次選課之前都得先查查有沒有先修。教務(wù)公布的先修課程記錄都是好多年前的,不但有重復(fù)的信息,好像很多都不正確了。

小Ho:課程太多了,教務(wù)也沒法整理吧。他們也沒法一個(gè)一個(gè)確認(rèn)有沒有寫錯(cuò)。

小Hi:這不正是輪到小Ho你出馬的時(shí)候了么!

小Ho:哎??

我們都知道大學(xué)的課程是可以自己選擇的,每一個(gè)學(xué)期可以自由選擇打算學(xué)習(xí)的課程。唯一限制我們選課是一些課程之間的順序關(guān)系:有的難度很大的課程可能會(huì)有一些前置課程的要求。比如課程A是課程B的前置課程,則要求先學(xué)習(xí)完A課程,才可以選擇B課程。大學(xué)的教務(wù)收集了所有課程的順序關(guān)系,但由于系統(tǒng)故障,可能有一些信息出現(xiàn)了錯(cuò)誤。現(xiàn)在小Ho把信息都告訴你,請(qǐng)你幫小Ho判斷一下這些信息是否有誤。錯(cuò)誤的信息主要是指出現(xiàn)了"課程A是課程B的前置課程,同時(shí)課程B也是課程A的前置課程"這樣的情況。當(dāng)然"課程A是課程B的前置課程,課程B是課程C的前置課程,課程C是課程A的前置課程"這類也是錯(cuò)誤的。

提示:拓?fù)渑判?/p>

輸入

第1行:1個(gè)整數(shù)T,表示數(shù)據(jù)的組數(shù)T(1 <= T <= 5)
接下來T組數(shù)據(jù)按照以下格式:
第1行:2個(gè)整數(shù),N,M。N表示課程總數(shù)量,課程編號(hào)為1..N。M表示順序關(guān)系的數(shù)量。1 <= N <= 100,000. 1 <= M <= 500,000
第2..M+1行:每行2個(gè)整數(shù),A,B。表示課程A是課程B的前置課程。

輸出

第1..T行:每行1個(gè)字符串,若該組信息無誤,輸出"Correct",若該組信息有誤,輸出"Wrong"。

樣例輸入

2 2 2 1 2 2 1 3 2 1 2 1 3

樣例輸出

Wrong Correct #include <cstdio> #include <iostream> #include <string> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <map> #include <vector> using namespace std; #define ll long longvector<int>to[100000+8]; queue<int>q; priority_queue<int, vector<int>, greater<int> >you;int n, m, t, in[1000000+8], sign[1000000+8], du[1000000+8], si[1000000+8];int get(int miao) {for(int i = 0; i <= miao; i++){du[i] = in[i];si[i] = sign[i];}int num = miao;while(!q.empty()){int t = q.front();num--;q.pop();for(int i = 0; i<to[t].size(); i++){du[to[t][i]]--;if(!du[to[t][i]] && !si[to[t][i]]){q.push(to[t][i]);si[to[t][i]] = 1;}}}return num; }int main() {int a, b;for(scanf("%d", &t);t--;){memset(in, 0, sizeof(in));memset(sign, 0, sizeof(sign));for(int i = 0; i <= n; i++)to[i].clear();scanf("%d%d", &n, &m);for(int i = 0; i<m; i++){scanf("%d%d", &a, &b);to[a].push_back(b);in[b]++;}for(int i = 1; i <= n; i++){if(!in[i] && !sign[i]){q.push(i);you.push(i);sign[i] = 1;}}if(get(n) == 0)printf("Correct\n");else printf("Wrong\n");}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/RootVount/p/11201113.html

總結(jié)

以上是生活随笔為你收集整理的HihoCoder - 1174 拓扑排序·一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。