Hust oj 1631 技能修煉(拓撲排序)

2021-07-16 07:43:13 字數 1511 閱讀 7088

技能修煉

time limit: 1000 ms

memory limit: 32768 k

total submit: 39(25 users)

total accepted: 26(24 users)

rating:

special judge: no

description

寒假第三次周賽強勢襲來,首先祝願大能依靠自己所學的取得乙個好成績。學習之餘,我們在這裡說乙個有關遊戲的問題,你來解決一下。一般的遊戲中人物技能在修煉時有個特點,就是後面的技能一般都要修煉了前面的某些個才可以修煉。比如10級有乙個技能火彈術,20級有乙個火焰術,那麼此時假如你沒修煉10級的火彈,你就不能直接修20級的火焰術,就是這樣的道理。現在的問題是,給定一些個技能間的依賴關係,你來寫程式來判斷該以什麼樣的順序來修煉這些技能。為了簡化問題,我們用數代表不同的技能,乙個數代表一種技能,輸入形式n1 n2則代表n1是n2的前置技能。

input

本題有多組測試資料,每組中第一行為兩個數n(1 <= n <= 500)和m(1 <= m <= n*(n-1)/2),其中n表示技能總數,接下來有m行。每行是代表兩個技能的數字n1和n2,表示n1是n2的前置技能。

output

對每組測試資料,輸出確定下來的技能修煉順序,要求對於輸入的每組資料,輸出一行,一行中各技能之間以乙個空格間隔(行尾不該有空格而是換行符)。

注意,對於排序的結果可能不是唯一的,這時要求先輸出代表技能的數較小的。

sample input

4 3 1 2

2 34 3

sample output

1 2 4 3

hint

對於上面的樣例中2和4都是3的前置技能,但是數字2較小,因此先輸出2。

模板題

#include#include#include#includeusing namespace std;

const int maxn = 505;

int a[maxn][maxn];

int degree[maxn]; //記錄每個節點所擁有的度的陣列

int output[maxn]; //輸出陣列

int n,m;

int x,y;

int cnt;

void toposort()

degree[pos] = -1; //將找到的度為0的節點的度標記為已經使用過

output[cnt++] = pos; //將節點放入輸出陣列

if(cnt == n) //如果輸出陣列元素個數和排序陣列元素個數相等終止迴圈

break;

for(int i=1;i<=n;i++)}}

}int main()

{ while(~scanf("%d%d",&n,&m))

{memset(a,0,sizeof(a));

memset(degree,0,sizeof(degree)); //陣列初始化為0

for(int i=0;i

163郵件傳送

importsmtplib fromemail.mime.textimportmimetext stmp伺服器 smtpserver smtp.163.com 發郵箱的位址 sender 你的郵箱號 傳送者郵箱密碼 授權碼 password 你的授權碼 設定傳送文字的內容 message 哈哈哈哈哈...

16 3 移動分屏

分屏編輯中游標的移動 vi中的游標鍵是h,j,k,l,要在各個屏之間切換,只需要先按一下ctrl w 把游標移動到上邊的屏 ctrl w k 把游標移動到下邊的屏 ctrl w j 把游標移動到右邊的屏 ctrl w l 把游標移動到左邊的屏 ctrl w h 把游標移動到下乙個的屏 ctrl w ...

163 郵件清理

由於163有封數限制,所以要進行自動清理 usr bin python encoding utf 8 import imaplib import time host imap.qiye.163.com username 賬號 password 密碼 debug 1 保留的郵件封數和一次刪除郵件的封數...