栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1097 Code the Tree

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1097 Code the Tree

#include<iostream>#include<stack>#include<vector>#include<queue>#include<set>#include<cstring>#include<cstdio>using namespace std;char str[300];void init(vector<set<int> > &adj){    int x,y,n,len=strlen(str),pos=0;        stack<int>num;    while(pos<len-1)    {        if(str[pos]=='(') { sscanf(str+pos+1,"%d%n",&x,&n); pos+=n+1;     num.push(x);        }        else if(str[pos]==')') { y = num.top();    num.pop(); x = num.top(); adj[x].insert(y);     adj[y].insert(x); pos++; }        else if(str[pos]==' ')    pos++;        }}int main(){    int x,y,i,sum;    while(gets(str))    {        vector<set<int> >adj(100,set<int>());        x = y = 1;        init(adj);        priority_queue<int,vector<int>,greater<int> >leafs;        sum=0;        for(i=1;adj[i].size();i++)        { sum++;         if(adj[i].size()==1)         leafs.push(i);        }        for(i=1;i<sum;i++){ x = leafs.top();    leafs.pop(); y =  *(adj[x].begin()); adj[x].erase(y);    adj[y].erase(x); if(adj[y].size()==1)         leafs.push(y); if(i>1)    cout<<' '; cout<<y; }        cout<<endl;    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号