#include<stdio.h>
int cost[10][10],n,colsum[10];
void cal_colsum()
{
for(int j=0;j<n;j++)
{
colsum[j]=0;
for(int i=0;i<n;i++)
colsum[j]+=cost[i][j];
}
}
void source_removal()
{
int i,j,k,select[10]={0};
printf("Topological ordering is:");
for(i=0;i<n;i++)
{
//Calculate the outdegree for each vertices
cal_colsum();
for(j=0;j<n;j++)
{
if(select[j]==0 && colsum[j]==0)//source vertex
break;
}
printf("%d ",j);
select[j]=1;
//Remove source vertex j from cost matrix
for(k=0;k<n;k++)
cost[j][k]=0;
}
}
int main()
{
printf("Enter no. of Vertices: ");
scanf("%d",&n);
printf("Enter the cost matrix\n");
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&cost[i][j]);
source_removal();
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IGNvc3RbMTBdWzEwXSxuLGNvbHN1bVsxMF07CnZvaWQgY2FsX2NvbHN1bSgpCnsKZm9yKGludCBqPTA7ajxuO2orKykKewpjb2xzdW1bal09MDsKZm9yKGludCBpPTA7aTxuO2krKykKY29sc3VtW2pdKz1jb3N0W2ldW2pdOwp9Cn0Kdm9pZCBzb3VyY2VfcmVtb3ZhbCgpCnsKaW50IGksaixrLHNlbGVjdFsxMF09ezB9OwpwcmludGYoIlRvcG9sb2dpY2FsIG9yZGVyaW5nIGlzOiIpOwpmb3IoaT0wO2k8bjtpKyspCnsKLy9DYWxjdWxhdGUgdGhlIG91dGRlZ3JlZSBmb3IgZWFjaCB2ZXJ0aWNlcwpjYWxfY29sc3VtKCk7CmZvcihqPTA7ajxuO2orKykKewppZihzZWxlY3Rbal09PTAgJiYgY29sc3VtW2pdPT0wKS8vc291cmNlIHZlcnRleApicmVhazsKfQpwcmludGYoIiVkICIsaik7CnNlbGVjdFtqXT0xOwovL1JlbW92ZSBzb3VyY2UgdmVydGV4IGogZnJvbSBjb3N0IG1hdHJpeApmb3Ioaz0wO2s8bjtrKyspCmNvc3Rbal1ba109MDsKfQp9CmludCBtYWluKCkKewpwcmludGYoIkVudGVyIG5vLiBvZiBWZXJ0aWNlczogIik7CnNjYW5mKCIlZCIsJm4pOwpwcmludGYoIkVudGVyIHRoZSBjb3N0IG1hdHJpeFxuIik7CmZvcihpbnQgaT0wO2k8bjtpKyspCmZvcihpbnQgaj0wO2o8bjtqKyspCnNjYW5mKCIlZCIsJmNvc3RbaV1bal0pOwpzb3VyY2VfcmVtb3ZhbCgpOwp9