郁闷的记者(枚举)

3.郁闷的记者

(rank.pas/c/cpp)

【题目描述】

你是一个体育报社的记者,你接受到一个艰难的任务:有N支足球队参加足球比赛,现在给你一些比赛的结果,需要你给出各支球队的排名,从1N

以下是给你的一些信息:

(1)    没有平局;

(2)    不同的球队排名不能相同;

(3)    对于所有满足1<=a<b<=n,第a名的球队一定可以打败第b名的球队。

给你部分比赛结果,要求给出排名,并且判断是否存在另一种排名方法满足给你的比赛结果。

【输入格式】

第一行输入N(1<=N<=5000),表示球队的数量,编号为1N。第二行输入M(1<=M<=100,000),表示给出的比赛场数,接下来M行,每行两个整数X_i,Y_i,表示X_i能打败Y_i

【输出格式】

    输出包含N+1行,前N行描述球队的排名,第i个数表示第i名的球队,第N+1行包含一个整数,如果为0表示不存在其他的排名方法,否则为1表示还有其他的排名方法。

【样例输入输出】

Rank.in

Rank.out

4

5

1 2

3 1

3 2

3 4

4 1

3

4

1

2

0

3

2

2 1

2 3

2

1

3

1

【数据范围】

30%的数据 1<=N<=7,1<=M<=15

60%的数据1<=N<=100,1<=M<=2000

 

 

 

 

分析:

 

 

枚举两个两个点(X1,Y1)(X2,Y2), 从图中可以看出两个绿色线段和两个蓝色线段分别相等,所以有以下两个方程:

X2-X1=Y3-Y1óY3=Y1+(X2-X1)

Y2-Y1=X1-X3óX3=X1-(Y2-Y1)

(x3,y3)求出后,可以根据同样的方法求出(Y4,Y4),也可以利用平行四边形两条对角线相交于一点得出:

X1+X4=X2+X3

Y1+Y4=Y2+Y3

从而求出(X4,Y4),再判断(X3,Y3)(X4,Y4)是否存在就可以了

时间复杂度为O(N^2)

 

 

再次贴代码:

 

Code

 

 

posted @ 2009-11-18 19:30  末日凌晨 散步的猫 ##  阅读(422)  评论(0编辑  收藏  举报