码迷,mamicode.com
首页 > 其他好文 > 详细

UVa10410代码

时间:2019-06-04 19:36:04      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:cstring   break   pac   span   size   while   can   amp   a10   

这里就不加太多的注释了,想一想就能明白代码的目的

// UVa 10410 
#include <iostream> 
#include <cstdio>
#include <cstring>
#include <vector> 
#include <stack> 
using namespace std;

const int maxn = 1000 + 5;

vector<int> node[maxn];
int pos[maxn]; 

int main() {
  int N, m;
  while (scanf("%d", &N) == 1) {
    for (int i = 1; i <= N; ++i)
      node[i].clear();
    for (int i = 1; i <= N; ++i) { // bfs
      scanf("%d", &m);
      pos[m] = i;    
    }
    stack<int> st;
    int b; 
    scanf("%d", &b);
    st.push(b);
    for (int i = 1; i < N; ++i) { // dfs 
      scanf("%d", &b);
      while (1) {
        int a = st.top();
        if (pos[a]+1 < pos[b] || (pos[a]+1 == pos[b] && a > b) || pos[a] == 1) {
          node[a].push_back(b);
          st.push(b);     
          break; 
        }
        else 
          st.pop();
      }
    }
    for (int i = 1; i <= N; ++i) {
      printf("%d:", i); 
      for (int j = 0; j < node[i].size(); ++j)
        printf(" %d", node[i][j]);
      printf("\n"); 
    }
  }
  return 0;
}

 

UVa10410代码

标签:cstring   break   pac   span   size   while   can   amp   a10   

原文地址:https://www.cnblogs.com/yifeiWa/p/10975364.html

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