Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int findcyclelen(unordered_map<int,int> &m, vector<int>& visited, int node, int start, int len) {
- if (visited[node] && node == start) {
- if(visited[m[node]])
- {
- return len;
- }
- }
- if (visited[node]) {
- return -1;
- }
- visited[node] = len;
- int v = m[node];
- int res = findcyclelen(m, visited, v, start, len + 1);
- if (res != -1) {
- return res;
- }
- return -1;
- }
- int longestCycle(vector<int>& edges) {
- int n = edges.size();
- unordered_map<int,int> m;
- for (int i = 0; i < n; i++) {
- m[i]=edges[i];
- }
- int mx = -1;
- for (int i = 0; i < n; i++) {
- vector<int> visited(n, 0);
- visited[i]=1;
- mx = max(mx, findcyclelen(m, visited,i, i, 1));
- }
- return mx;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment