uva 1423 Guess
来源:互联网 发布:什么手机有4g网络 编辑:程序博客网 时间:2024/05/21 11:15
/* 利用前缀和的思想进行转化,每个符号可以得出一个不等关系,利用前缀和将其转化为二元关系,
然后一个二元组为一条有向边,进行拓扑排序,按拓扑的顺序进行赋值。*/
#include <stdio.h>#include <cstring>#include <algorithm>#include <queue>#include <iostream>using namespace std;bool map[11][11];int in[11],ans[11];bool vis[11];int n;void topsort(){ queue <int> q; for(int i=0; i<=n; i++) if(in[i]==0) q.push(i); int num=0; while(!q.empty()) { int u=q.front(); q.pop(); num++; for(int i=0; i<=n; i++) { if(map[u][i]) { in[i]--; if(in[i]==0) { q.push(i); ans[i]=num; } } } }}int main(){ //freopen("a.txt","r",stdin); int t; scanf("%d",&t); char s[100]; while(t--) { scanf("%d",&n); scanf(" %s",s); memset(map,false,sizeof(map)); memset(in,0,sizeof(in)); memset(ans,0,sizeof(ans)); int h=0; for(int i=1; i<=n; i++) for(int j=i; j<=n; j++) { if(s[h]=='+') map[i-1][j]=true,in[j]++; else if(s[h]=='-') map[j][i-1]=true,in[i-1]++; h++; } topsort(); for(int i=1; i<n; i++) printf("%d ",ans[i]-ans[i-1]); printf("%d\n",ans[n]-ans[n-1]); } return 0;}
- uva 1423 Guess
- UVA 1423 - Guess
- UVa OJ 1423 Guess
- UVa 1423 Guess (拓扑排序)
- UVA 1423 - Guess(拓扑排序)
- UVA 1423Guess 【拓扑排序】
- UVA 1423 Guess 拓扑排序
- UVA 1423 Guess(拓扑排序)
- uva-1423Guess 拓扑排序
- Guess UVA
- uva 1423 - Guess(拓扑排序)
- uva 1423 - Guess (topsort,4级)
- uva 1423 - Guess(拓扑排序)
- uva uva 1612 - Guess
- UVA - 1612 Guess 贪心
- Uva - 1612 - Guess
- UVA 1612 Guess
- UVA 1612 Guess
- 类的基本知识之成员变量、成员方法和构造方法
- Gentoo 印象 -- Gentoo Linux 适合干什么?
- 海明码
- java Class类
- Solution for Error: APP-FND-01931 or FRM-92050
- uva 1423 Guess
- 用JS实现两个图片的小切换功能
- win7 SQL server2005安装
- 高光贴图+法线贴图
- code snippet
- 总结的时间语句(python)
- android创建sqlite数据库及在SD卡上创建数据库
- 大数据量缓存应用--memcached+magent
- hdu2566(统计硬币)