poj 1094解題報告
這個題主要的是使用拓撲排序,相關演算法隨便找一本演算法的書都能看到,也不難,就不羅嗦了。
我使用鄰接表來儲存圖,並使用dm,dn分別儲存每個節點(即字母)的出度和入度。
我只想強調一下需要注意的:
一、先判斷是否有環路
我就是一開始在檢測到不能確定序列的時候就直接返回了,而沒有判斷是否有環路,結果一直wa;
二、當序列可以確定或是檢測到環路的時候,忽略後邊的輸入。
code:
#include
#include
using
namespacestd;
charg[26][26];
intdm[26];//每一列的和,即每個字母的入度
intdn[26];//每一行的和,即每個字母的出度
intm,n;
charresult[27];
inttoposort()
}if(0==count)//發現環路
returncount;
if(count>1)sorted=false;
for(inti=0;i
dmt[index]=-1;
result[r++]=index+'a';
}result[r]=0;
if(sorted)
return1;//序**定
else
return2;//序列不確定
}intmain()
if(j==dn[str[0]-'a'])
intres=toposort();
if(1==res)//序列已確定
else
if(0==res)//發現衝突}}
if(found)
else
if(incons)
else
cin>>n>>m;
}return0;
}
POJ 1094 變數排序 解題報告
題目描述 把不同的變數進行公升序排序用小於操作符命令實現的。例如由a b,b c 和 c d 可以得到公升序序列a,b,c,d 在本題中,你將得到若干條小於操作符命令,形如 a b 的格式,請你確定利用這些命令,能否得到乙個唯一的公升序序列。輸入格式 第1行為整數n,m,n 2 n 26 表示參與排...
POJ 1094 拓撲排序
文章大意是將n個字母排序 n 26 最終必須排成鍊錶式的輸出 一旦確定或者出現環,記錄當前步數,後續輸入無視 加個拓撲排序判斷圖的總結 1 如果輸入的有向圖中的點,不存在入度為0的點,則存在迴路,反過來則不成立 2 如果入隊的點的個數小於輸入的點的個數,則肯定存在迴路 3 如果存在的入度為零的點大於...
拓撲排序 poj1094
此題題目有點小問題,那也是很多人ac不了的原因 問題是,當給定的前k項條件能夠確定出大小順序時,即便k項之後出現了矛盾條件,輸出也應該是sorted sequence determined after k relations 後面再輸出排序好的序列!include include using nam...