题意及思路:https://www.cnblogs.com/dd-bond/p/10859864.html

代码:

#include <bits/stdc++.h>
#define LL long long
#define db double
using namespace std;
const int maxn = 500010;
stack<pair<int ,int> >s;
vector<int> G[maxn];
int a[maxn], ans[maxn], tot, n;
void topsort(void) {
queue<int> q;
q.push(n + 1);
while(!q.empty()) {
int x = q.front();
q.pop();
for (int i = 0; i < G[x].size(); i++) {
int y = G[x][i];
ans[y] = tot--;
q.push(y);
}
}
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
tot = n;
while(!s.empty())s.pop();
for (int i = 1; i <= n + 1; i++) G[i].clear();
bool flag = 0;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
if(a[i] == -1) a[i] = i + 1;
while(!s.empty() && s.top().second <= i) s.pop();
if(!s.empty() && a[i] > s.top().second) {
flag = 1;
} else {
s.push(make_pair(i, a[i]));
G[a[i]].push_back(i);
}
}
if(flag) {
printf("-1\n");
}
else {
topsort();
for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
printf("\n");
}
} }

  

最新文章

  1. being词典案例分析
  2. Mac本“安全性与隐私”里没有“任何来源”选项
  3. JavaScript调Java
  4. GDC 2016 神秘海域4中使用Substance制作Texture
  5. linux概念之/dev/shm
  6. C语言sprintf与sscanf函数[总结]
  7. EXPDP IMPDP 知识总结
  8. ArcSDE for Oracle表空间管理——暂时(TEMP)表空间
  9. Modular Fibonacci
  10. Binomial Coeffcients 过去山东省省赛冠军
  11. Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用
  12. swift -- 构造/析构函数
  13. asp.net core2.0网站的环境搭建和网站部署
  14. qt5.4解决输出中文乱码问题
  15. Alibaba, I&#39;m interested in you.
  16. 2019年2月备战春招最新大数据+Java岗位+人工智能岗位资料免费送【限时领取】
  17. TestNg 4.组测试中的方法分组测试
  18. IDEA攻略合辑
  19. 站内SEO规范
  20. **优化--后端**: 计数缓存counter_cache; rack-mini-profiler(2300&#127775;) ; bullet(5000✨):侦测N+1query

热门文章

  1. go语言从例子开始之Example15.闭包
  2. django中动态生成二级菜单
  3. jvm加载包名和类名相同的类的规则,以及如何加载包名和类名相同的类(转)
  4. python 在图像上写中文字体 (python write Chinese in image)
  5. go(一)基础知识
  6. 关于Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
  7. 集合类中的Collection接口实现类
  8. 高级运维(七):Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包
  9. java sigar 系统监控
  10. 12. MySQL简单使用