http://acm.hdu.edu.cn/showproblem.php?pid=1285
讨论区给的测试数据
6 11
5 3
5 3 //重复出现
5 1
5 4
5 2
3 1
3 2
6 4
6 2
4 2
4 2 //重复出现
结果是:5 3 1 6 4 2
我的代码:
#include <iostream>
using namespace std;
int table[510][510];
int count[510];
int main()
{
int num, n, a, b, i, j;
while (cin>>num>>n)
{
memset(table, 0, sizeof(table));
memset(count, 0, sizeof(count));
while (n--) //建立表格
{
cin>>a>>b;
if (table[a-1][b-1] != 1) //判断是否重复
{
table[a-1][b-1] = 1;
count[b-1]++;
}
}
int k = 0 ; //控制输出格式
for (i=0; i<num; i++)
{
if (count[i]==0)
{
if (k == 0)
{
cout<<i+1;
k++;
}
else
cout<<" "<<i+1;
count[i]--;
for (j=0; j<num; j++)
{
if (table[i][j] == 1)
count[j]--;
}
i = -1; //重新扫一遍
}
}
cout<<endl;
}
return 0;
}