所以这是我的问题: 输入: N,第一行中的步骤总数。每个步骤从0到N-1隐式编号。第二行中的数字K.然后下一个K行每个包含2个整数。每条这样的线代表一个依赖:如果“X Y”在一行中,则必须在步骤Y之前执行步骤X.
输出: 一行包含正确顺序的步骤。如果可能有多个这样的正确订单,那么请尽早打印出较小数字的订单。
示例:
3
2
1 0
0 3
1 0 3
到目前为止,这是我的代码。我不知道如何在排序后比较元素,以获得所需的格式。任何线索都会受到赞赏..谢谢。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int n,k,i,j,temp,a=2;
scanf("%d",&n);
scanf("%d",&k);
int arr[k][2];
int ans[n];
for(i=0;i<k;i++)
scanf("%d %d",&arr[i][0],&arr[i][1]);
for(i=0;i<k;i++){
for(j=i+1;j<k;j++){
if(arr[i][0]>arr[j][0]){
temp = arr[i][0];
arr[i][0] = arr[j][0];
arr[j][0] = temp;
temp = arr[i][1];
arr[i][1] = arr[j][1];
arr[j][1] = temp;
}
}
}
/*
for(i=0;i<k;i++)
printf("%d %d\n",arr[i][0],arr[i][1]);
*/
ans[0] = arr[0][0];
ans[1] = arr[0][1];
/*done[n];
for(i=0;i<n;i++)
done[i] = 0;
done[arr[0][0]] = 1;
done[arr[0][1]] = 1;
for(i=1;i<k;i++){
if(done[arr[i][0]] == 0 || done[arr[i]])
}
*/
for(i=0;i<n;i++)
printf("%d ",ans[i]);
printf("\n\n");
return 0;
}