題目鏈結
題意:給出大於等於 a 小於 a + n 的字母間的大小關係式,問是否能確定 n個字母的大小關係?如能,在第幾個關係式時能確定?如不能,是否出現了矛盾,在第幾個關係式時出現了矛盾?
關係式舉例如下:
a#include#include #include #includeusing namespace std;
int n, flag;
int result[27]; //拓撲排序結果存放陣列
int visited[27]; //拓撲排序時標識是否已訪問過
int map[27][27]; //map[i][j] = 1 表示從 i + 'a' 到 j + 'a' 之間有一條單向邊
int in[27]; //in[i] 存放 i + 'a' 的入度
/檢查是否有環
void floyd( int a, int b )
if( i == a && j == b )}}
} }}拓撲排序
bool toposort( )
} if( k == -1 )
return false;
result[size ++] = k;
visited[k] = 1;
更新有從已排序的當前節點有單向邊的節點的入度
for( j = 0; j < n; j ++ )
} return true;
}int main()
檢查是否有矛盾,即對環的檢查
floyd( b - 'a', a - 'a' );
if( flag == 1 )
printf( "inconsistency found after %d relations.\n", i );
else}}
}
if( flag == 0 )
printf("sorted sequence cannot be determined.\n");
} //fclose(stdin);
//fclose(stdout);
return 0;
}
POJ 1094 拓撲排序
文章大意是將n個字母排序 n 26 最終必須排成鍊錶式的輸出 一旦確定或者出現環,記錄當前步數,後續輸入無視 加個拓撲排序判斷圖的總結 1 如果輸入的有向圖中的點,不存在入度為0的點,則存在迴路,反過來則不成立 2 如果入隊的點的個數小於輸入的點的個數,則肯定存在迴路 3 如果存在的入度為零的點大於...
拓撲排序 poj1094
此題題目有點小問題,那也是很多人ac不了的原因 問題是,當給定的前k項條件能夠確定出大小順序時,即便k項之後出現了矛盾條件,輸出也應該是sorted sequence determined after k relations 後面再輸出排序好的序列!include include using nam...
POJ 1094 拓撲排序)
拓排 各種判 program p1094 type map3 record indegree array a z of longint map array a z 1.26 of char outdegree array a z of longint end var n,m,i,j,num,valu...