MasssA


私信TA

用户名:1294309339

访问量:34876

签 名:

城市学院的渣渣

等  级
排  名 104
经  验 7932
参赛次数 6
文章发表 73
年  龄 0
在职情况 学生
学  校 城市学院的渣渣
专  业

  自我简介:

城市学院的渣渣

解题思路:

注意事项:

参考代码:

#include<iostream>
#include<vector>
#include<map>
#include<cstring>
#include<queue>
#include<set>
using namespace std;
map<string,int> si;
map<int,string> is;
vector<int> edge[1005];
vector<string>ans;
int in[1005];
int t, n;
string a, b;
int main()
{
    int num;
    cin >> t;
    while(t--){
        cin>> n;
        //因为多组操作每次需前清空
        num = 0;
        si.clear();
        is.clear();
        ans.clear();
        memset(in, 0, sizeof(in));
        for(int i=0;i<=n;i++) edge[i].clear();
        while(n--){
            cin >> a>>b;
            //查询si中有无a女友
            if(!si.count(a))
            {
                si[a]=num; is[num]=a;
                num++;
            }
            if(!si.count(b))
            {
                si[b]=num; is[num]=b;
                num++;
            }
            edge[si[a]].push_back(si[b]);
            in[si[b]]++;
        }
        queue<int>q;
        for(int i=0;i<num;i++)
         if(in[i]==0) q.push(i);
        while(!q.empty())
        {
            int k=q.front(); q.pop();
            ans.push_back(is[k]);
            for(int i=0;i<edge[k].size();i++)
            {
                int v=edge[k][i];
                in[v]--;
                if(in[v]==0) q.push(v);
            }
        }
        for(int i=0;i<ans.size()-1;i++) cout<<ans[i]<<" ";
        cout<<ans[ans.size()-1]<<endl;
    }
    return 0;
}

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区