CCF-2015-9-13-04

来源:互联网 发布:mac脚本编辑器 用途 编辑:程序博客网 时间:2024/05/29 09:06
下题为个人做法,只做参考。
二维数组第三个为状态,表示是否已经访问过该条路径。
/*国王给城市修路,两个城市互相有路则为便利城市,路则为便利路,求便利路的条数。第一行输入两个数字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;}

0 0
原创粉丝点击