003-algorithm-have circle-topology sort

来源:互联网 发布:杨幂睡小鲜肉知乎 编辑:程序博客网 时间:2024/06/07 06:15
#include<iostream>#include<vector>#include<map>using namespace std;bool have_circle(int a[], int m){vector<int> b(a, a+m*m);map<int, int> rudu;vector<int> stack; for (int i = 0; i < m; i++){int tmp(0);for (int j = 0; j < m; j++){tmp += a[i + j*m];}if (tmp == 0){stack.push_back(i);}else{rudu[i] = tmp;//rudu.insert(std::make_pair(i, tmp));//rudu.insert(std::pair<int, int>(i, tmp));//rudu.insert(map<int, int>::value_type(i, tmp));}}//forwhile (!stack.empty()){int x = *(stack.end() - 1);stack.pop_back();for (int i = 0; i < m; i++){if (b[x*m + i]--){rudu[i]--;if (rudu[i] == 0){stack.push_back(i);rudu.erase(i);}}//if}//for}//whileif (rudu.empty()){return 0;}else{return 1;}//cout << *(b.end() - 4) << endl;return 0;}int main(){int a[] = {0,1,0,0, 0,0,1,0, 1,0,0,0, 0,1,1,0};int m=4;cout << have_circle(a, m) << endl;;}

0 0
原创粉丝点击