程序设计与数据结构综合实践II第一周练习 A - Isenbaev's Number
来源:互联网 发布:unity3d制作软件下载 编辑:程序博客网 时间:2024/05/13 02:19
Description
Isenbaev's Number: Isenbaev本人为0,Isenbaev的队友为1,Isenbaev的队友的队友为2,……以此类推
Input
第一行:n ([1, 100]) 后n行:n支队伍的队友(三人)
Output
选手名称 Isenbaev's Number/n
Sample Input
7Isenbaev Oparin ToropovAyzenshteyn Oparin SamsonovAyzenshteyn Chevdar SamsonovFominykh Isenbaev OparinDublennykh Fominykh IvankovBurmistrov Dublennykh KurpilyanskiyCormen Leiserson Rivest
Ayzenshteyn 2Burmistrov 3Chevdar 3Cormen undefinedDublennykh 2Fominykh 1Isenbaev 0Ivankov 2Kurpilyanskiy 3Leiserson undefinedOparin 1Rivest undefinedSamsonov 2Toropov 1实现代码:
#include<iostream>#include<vector>#include<string>#include<algorithm>#include<queue>using namespace std;const int INF = 999;int getIndex(vector<vector<string> > nameList, string name){for(int i = 0; i < nameList.size(); ++ i){if(name == nameList[i][0]){return i;}}return -1;}bool ifExist(vector<string> nameList, string name){for(int i = 0; i < nameList.size(); ++ i){if(name == nameList[i]){return true;}}return false;}bool cmp(vector<string> name1, vector<string> name2){return name1[0] < name2[0];}int main(){vector<vector<string> > nameList;int n;cin >> n;string tem;getline(cin, tem);<span style="white-space:pre"></span>、、for(int i = 0; i < n; ++ i){string _names;string teammates[3];getline(cin, _names);for(int j = 0; j < 3; ++ j){int firstSpaceIndex = _names.find_first_of(' ');teammates[j] = _names.substr(0, firstSpaceIndex);_names = _names.substr(firstSpaceIndex+1);}for(int j = 0; j < 3; ++ j){int index = getIndex(nameList, teammates[j]);if(index == -1){vector<string> tempPlayer;nameList.push_back(tempPlayer);nameList[nameList.size()-1].push_back(teammates[j]);index = nameList.size()-1;}for(int k = 0; k < 3; ++ k){if(teammates[k] != nameList[index][0] && !ifExist(nameList[index], teammates[k]))nameList[index].push_back(teammates[k]);}}}sort(nameList.begin(), nameList.end(), cmp);vector<int> IseNum(nameList.size());for(int i = 0; i < nameList.size(); ++ i)IseNum[i] = INF;<span style="white-space:pre"></span>//初始化if(getIndex(nameList, "Isenbaev") != -1) //<span style="font-family: Arial, Helvetica, sans-serif;">Isenbaev可能不存在</span>{IseNum[getIndex(nameList, "Isenbaev")] = 0;queue<int> com;<span style="white-space:pre"></span>//使用队列进行广度优先遍历com.push(getIndex(nameList, "Isenbaev"));while(!com.empty()){int q = com.front();com.pop();for(int k = 0; k < nameList[q].size(); ++ k){int _index = getIndex(nameList, nameList[q][k]);if(IseNum[_index] > IseNum[q]+1){IseNum[_index] = IseNum[q]+1;<span style="white-space:pre"></span>//更新选手的<span style="font-family:Arial, Helvetica, sans-serif;">IseNum</span>}}}}for(int i = 0; i < IseNum.size(); ++ i){cout << nameList[i][0] << " ";if(IseNum[i] < 999) cout << IseNum[i];else cout << "undefined";cout << endl;}return 0;}
0 0
- 程序设计与数据结构综合实践II第一周练习 A - Isenbaev's Number
- 程序设计与数据结构综合实践II第一周练习 Two Teams
- Isenbaev's Number
- ural 1837 Isenbaev's Number
- URAL 1837 Isenbaev's Number
- Timus 1837 Isenbaev's Number
- ural 1837. Isenbaev's Number bfs
- Timus 1837. Isenbaev's Number 图论 题解
- ural 1837. Isenbaev's Number bfs
- URAL 1837 Isenbaev's Number (BFS)
- URAL 1837. Isenbaev's Number (map + Dijkstra || BFS)
- 第一周《C语言及程序设计》实践项目11 算术运算符与算术表达式
- 程序设计实践----算法与数据结构
- 程序设计与算法 第一周测验
- 第一周上机实践项目一练习一
- 数据结构与算法练习-Number/数字
- 数据结构与程序设计练习2.1E4
- 数据结构与程序设计练习2.2E2(b)
- 摘记
- 简单卡尔曼滤波
- 总市值3862亿的创始人们在各阶段是怎么选女友的?
- UVA 10110
- C++多态
- 程序设计与数据结构综合实践II第一周练习 A - Isenbaev's Number
- 多线程操作同一个epoll fd同步
- 我的架构师梦想日记
- hdu5366(DP)
- 杭电(hdu)1106 排序
- HDU 2102 BFS
- 犬夜叉同人游戏:魂全攻略【两种结局,完美结局在最后】
- 野人学Android基础篇之HelloWorld程序第二课--Manifest.xml的不完全解释
- HTTP请求中如何选择Get和Post方式