您的位置:首页 > 其它

CCF-2015-9-13-04

2015-09-13 19:29 190 查看
下题为个人做法,只做参考。
二维数组第三个为状态,表示是否已经访问过该条路径。
/*国王给城市修路,两个城市互相有路则为便利城市,路则为便利路,求便利路的条数。第一行输入两个数字m,n ;m 为城市数量,n为路的总数;接下来的n行每行输入两个数i,j : 表示i->j为一条通路最后为一行输出,表示便利路的条数。*/#include "iostream"using namespace std;bool myPorcess(int **p, int start, int end, int size, int deep);int main() {int nCity = 0;int nRoad = 0;cin >> nCity;cin >> nRoad;int  **pRoad = new int*[nRoad]();for (int i = 0; i < nRoad; ++i)pRoad[i] = new int[3]();for (int i = 0; i < nRoad; ++i){cin >> pRoad[i][0];cin >> pRoad[i][1];pRoad[i][2] = 0;}int count = 0;for (int i = 0; i < nRoad; ++i) {pRoad[i][2] = 1;if (myPorcess(pRoad, pRoad[i][1], pRoad[i][0], nRoad, 0))count++;for (int j = 0; j < nRoad; ++j)pRoad[j][2] = 0;}cout << count << endl;return 0;}bool myPorcess(int **p,int start,int end,int size,int deep) {if (deep != 0)if (start == end)return true;for (int i = 0; i < size; ++i)if (p[i][0] == start)if (p[i][2] == 1)continue;else {p[i][2] = 1;return myPorcess(p, p[i][1], end, size, 1);}return false;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: