3687-Labeling Balls-反向拓扑排序
来源:互联网 发布:stm32jlink 烧录软件 编辑:程序博客网 时间:2024/05/16 14:44
Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 toN in such a way that:
- No two balls share the same label.
- The labeling satisfies several constrains like "The ball labeled with a is lighter than the one labeled withb".
Can you help windy to find a solution?
Input
The first line of input is the number of test case. The first line of each test case contains two integers,N (1 ≤ N ≤ 200) and M (0 ≤ M ≤ 40,000). The nextM line each contain two integers a and b indicating the ball labeled witha must be lighter than the one labeled with b. (1 ≤ a, b ≤N) There is a blank line before each test case.
Output
For each test case output on a single line the balls' weights from label 1 to labelN. If several solutions exist, you should output the one with the smallest weight for label 1, then with the smallest weight for label 2, then with the smallest weight for label 3 and so on... If no solution exists, output -1 instead.
Sample Input
54 04 11 14 21 22 14 12 14 13 2
Sample Output
1 2 3 4-1-12 1 3 41 3 2 4
题意: 假设原来球一样重,后面告诉的条件,例如2 1 前面的球比后面的球重,把球按照重量排序,重的在后面且序号较大,然后输出每个球的位置,没有处理的球在原来的位子,反向排,从n到1
#include<stdio.h>#include<string.h>#include<stdlib.h>int n,m;int ls[500];int du[250];int map[250][250];void tuo(){ bool flag ; int c = 0; int mm; for(int i = n; i >= 1; i--) { flag = false; for(int j = n; j >= 1; j--) { if(du[j]==0) { mm = j; flag = true; break; } } if(!flag) { printf("-1\n"); return; } ls[mm] = i; du[mm]=-1; for(int j = 1;j <= n; j++) { if(map[mm][j]) du[j]--; } } for(int i = 1; i <= n; i++) { printf("%d",ls[i]); if(i < n) printf(" "); } printf("\n");}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(du,0,sizeof(du)); memset(map,0,sizeof(map)); for(int i = 0; i < m; i++) { int u,v; scanf("%d%d",&u,&v); if(!map[v][u]) { map[v][u]=1; du[u]++; } } tuo(); } return 0;}
- 3687-Labeling Balls-反向拓扑排序
- POJ 3687 Labeling Balls (反向拓扑排序)
- poj-3687-Labeling Balls-反向建图+拓扑排序
- Labeling Balls 3687(拓扑排序+反向建图)
- POJ 3687 Labeling Balls (反向拓扑排序)
- Labeling Balls poj 3687(拓扑排序反向建图)
- POJ 3687 Labeling Balls(拓扑排序+反向思考)
- poj3687 Labeling Balls (反向拓扑排序)
- POJ 3687 Labeling Balls 反向拓扑建图是个坑点
- 【POJ 3687 Labeling Balls】 + 反向拓扑
- poj 3687 Labeling Balls【反向拓扑】
- Labeling Balls--拓扑排序
- poj 3687 Labeling Balls(拓扑排序)
- pku 3687 Labeling Balls 逆序拓扑排序
- POJ 3687 Labeling Balls 拓扑排序
- poj 3687 【拓扑排序】【Labeling Balls】
- poj Labeling Balls 3687 拓扑排序!!!!
- poj 3687 Labeling Balls 拓扑排序
- HDU 5363 Key Set(快速幂)
- [POJ 1947] Rebuilding Roads 树形dp
- Prim
- linux svn代码版本回退
- UVa 558 Wormholes (判负圈+Bellman-Ford算法)
- 3687-Labeling Balls-反向拓扑排序
- codeforces 567D One-Dimensional Battle Ships (map维护)
- 暑期校园生活中的那些烦心事!
- Shell编程基础
- java集合框架(map集合)
- hibernate SQL Error: 8152, SQLState: 22001
- poj-3687 Labeling Balls
- Lua笔记7-闭包2
- Find The Multiple