码迷,mamicode.com
首页 > 编程语言 > 详细

Guess UVALive - 4255 (拓扑排序)

时间:2017-08-26 15:06:10      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:names   pre   using   print   ble   ++   void   open   get   

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 (拓扑排序)

标签:names   pre   using   print   ble   ++   void   open   get   

原文地址:http://www.cnblogs.com/yijiull/p/7435287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!