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

zoj 2195 Relative Relatives

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

zoj 2195 Relative Relatives

#include<iostream>#include<string.h>#include<stdio.h>#include<vector>#include<map>#include<queue>using namespace std;enum {    SIZ = 104,};struct Node {    bool init;    int par;    int age;    string name;    bool operator <(const Node&o)const{        if (age != o.age){  return age < o.age;        }        return name > o.name;    }    void initAge();};Node tree[SIZ];void Node::initAge(){    if (init) return;    tree[par].initAge();    age = tree[par].age - age;    init = true;}int num, pos;map<string, int> tab;void output(priority_queue<Node> &q){    static int tst = 0;    printf("DATASET %dn", ++tst);    while(!q.empty()){        const Node &o = q.top();        if (o.name != "Ted") cout<<o.name<<" "<<o.age<<"n";        q.pop();    }}void fun(){    priority_queue<Node> q;    ++num;    for (int i=0; i<num; ++i){        tree[i].initAge();        q.push(tree[i]);    }    output(q);}int find(string &s){    map<string, int>::iterator it = tab.find(s);    if (it != tab.end()) return it->second;    tree[pos].par = -1;    tree[pos].init = false;    tree[pos].name = s;    tab.insert(make_pair(s, pos));    return pos++;}void readIn(){    tab.clear();    pos = 0;    cin>>num;    int diff;    string a, b;    int pa, pb;    for (int i=0; i<num; ++i){        cin>>a>>b>>diff;        pa = find(a);        pb = find(b);        tree[pb].age = diff;        tree[pb].par = pa;    }    a = "Ted"; pa = find(a);    tree[pa].init = true;    tree[pa].age = 100;}int main(){    int tst;    cin>>tst;    while(tst-- > 0){        readIn();        fun();    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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