题目链接:计算机软件能力认证考试系统
思路见注释。
#include<iostream>
#include<map>
#include<set>
#include<vector>
#include<queue>
using namespace std;
//需要把用户和用户组都看作用户
struct j
{
set<string>cz;//操作
set<string>zzl;//资源类型
set<string>zmc;//资源名称
};//存放角色属性的结构体
map<string,j>jue;//角色名对于相应的结构体
typedef set<string> lian;//角色库,存放每个用户/(组)所关联的角色
map<string,lian>user;//用户名对应关联的角色库
int n,m,q;
int nv,no,nn,ns,ng;
string czm,zzlm,zmcm;//保存输入的待查询的名称、资源种类、资源名称
bool judge(string name)
{
lian jsk=user[name];//用户名对应的角色库
for(auto it=jsk.begin();it!=jsk.end();it++)//取用户名关联的角色逐个判断
{
string jname=*it;//库里的角色名
if(jue[jname].cz.count(czm)||jue