#include <iostream>
#include <sstream>
#include <string>
#include <list>
#include <set>
#include <algorithm>
#include "json/json.h"
using namespace std;
struct child_item{
string name;
//list<unsigned> c_ids;
set<unsigned> c_ids;
void add_id(unsigned id)
{
c_ids.insert(id);
}
};
struct relation_item{
string name;
unsigned id;
list<child_item> children;
};
struct relations{
list<relation_item> items;
bool get_child_ids(Json::Value &cids, child_item &ci )
{
if( !cids.isArray() )
{
return false;
}
for( unsigned i=0;i<cids.size();++i )
{
ci.add_id( cids[i].asUInt() );
}
return true;
}
bool get_child_item(Json::Value &jv, relation_item &ri )
{
if( !jv.isArray() )
{
return false;
}
for( unsigned i=0;i<jv.size();++i )
{
if( !jv[i].isMember("name") )
{
return false;
}
child_item ci;
ci.name = jv[i][