この 1...n のグラフがあります。トポロジカル ソートの解を見つけました。それが有効な解かどうかはどうすればわかりますか? たとえば、n = 5 の場合。この接続性は 1->2、2->3、1->3、1->5、
私は解決策 4->1->5->2->3 を持っています。それは有効ですか? トップソートに関する私の考えが明確ではないかもしれません。
便宜上、ここに私のコードがあります
int incoming[n],A[n][n];
priority_queue<int> Q;
while(m--){
int i,j;
cin>>i>>j;
A[i][j] = 1;
++incoming[j];
}
for(int i=1;i<=n;++i)
if(!incoming[i])
Q.push(i);
vector<int> toplist;
while(!Q.empty()){
int u = Q.top(); Q.pop();
toplist.push_back(u);
for(int i = 1;i<=n;++i)
{
if(A[u][i])
{
A[u][i] = 0;
--incoming[i];
if(!incoming[i])
Q.push(i);
}
}
}
for(int i=0;i<toplist.size();++i)
cout<<toplist[i]<<" ";