解题思路:
看了下别人的大致思路,知道可以用拓扑排序,即每一次输出入度为0的。用到了map,map的删除是在是坑。
注意事项:
参考代码:
#include <iostream> #include <string> #include <map> using namespace std; map<string,int> si;//string为人名,int为该人的入度数即前面女人的个数 int main() { int T,n,i; cin>>T; while(T!=0){ si.clear(); cin>>n; string **str = new string*[n]; for(i=0;i<n;i++) str[i] = new string[2]; for(i=0;i<n;i++){ cin>>str[i][0]>>str[i][1]; if(!si.count(str[i][0])){//判断map中是否有该人 si[str[i][0]]=0; } if(!si.count(str[i][1])){ si[str[i][1]]=1; }else{ si[str[i][1]]++; } } while(si.size()){ map<string,int>::iterator iter = si.begin(); while(1){ if(iter->second == 0){//前面没人(入度为0)就输出 cout<<iter->first<<" "; for(i=0;i<n;i++){ if(str[i][0]==iter->first){ si[str[i][1]]--;//在她之后的入度都减一 } } si.erase(iter->first); break; }else{ iter++; } } } cout<<endl; T--; } return 0; }
0.0分
0 人评分
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:1096 |
不容易系列2 (C语言代码)浏览:1295 |
C语言程序设计教程(第三版)课后习题6.2 (C++代码)浏览:943 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:528 |
C语言训练-舍罕王的失算 (C语言代码)浏览:1033 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1048 |
剔除相关数 (C语言代码)浏览:1008 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1592 |
【绝对值排序】 (C语言代码)浏览:820 |
数对 (C语言代码)浏览:697 |