Guess UVALive - 4255 (拓扑排序)

Posted yijiull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guess UVALive - 4255 (拓扑排序)相关的知识,希望对你有一定的参考价值。

Guess

 UVALive - 4255 

题意:

拓扑排序

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn=12;
 5 int p[maxn][maxn],b[maxn];
 6 int in[maxn];
 7 int n;
 8 
 9 void top_sort(){
10     queue<int> q;
11     for(int i=0;i<=n;i++) if(in[i]==0) q.push(i);
12     while(!q.empty()){
13         int x=q.front();
14         q.pop();
15         for(int i=0;i<=n;i++) if(p[x][i]==1){
16             b[i]=b[x]-1;
17             in[i]--;
18             if(in[i]==0) q.push(i);
19         }
20     }
21 }
22 int main(){
23     int t;
24     scanf("%d",&t);
25     b[0]=0;
26     while(t--){
27         memset(b,0,sizeof(b));
28         memset(p,0,sizeof(p));
29         memset(in,0,sizeof(in));
30         scanf("%d",&n);
31         getchar();
32         int m=(n+1)*n/2;
33         char s;
34         for(int i=1;i<=n;i++){
35             for(int j=i;j<=n;j++){
36                 scanf("%c",&s);
37                 if(s==+) p[j][i-1]=1,in[i-1]++;
38                 else if(s==-) p[i-1][j]=1,in[j]++;
39             }
40         }
41         top_sort();
42         for(int i=1;i<=n;i++) printf("%d%c",b[i]-b[i-1],i==n?\n: );
43     }
44 }
View Code

 

以上是关于Guess UVALive - 4255 (拓扑排序)的主要内容,如果未能解决你的问题,请参考以下文章

D - Guess UVALive - 4255 拓扑排序

拓扑排序或差分约束Guess UVALive - 4255

寒假特训题解

UVA - 1423 Guess(拓扑排序)

UVA - 1423 Guess(拓扑排序)

UVA - 1423 Guess(拓扑排序)