File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #include < algorithm>
2+ #include < vector>
3+
4+ using namespace std ;
5+
6+ int u[5005 ];
7+ vector<int > adj[5005 ];
8+
9+ bool hasCycle (int n, int e, vector<vector<int >> edges){
10+ for (int i=1 ; i<=n; i++){
11+ u[i] = i;
12+ }
13+
14+ int size = edges.size ();
15+ for (int i=0 ; i<size; i++){
16+ int a1 = edges[i][0 ], a2 = edges[i][1 ];
17+ if (e == a1 || e == a2) continue ;
18+
19+ int u1 = u[a1], u2 = u[a2];
20+ if (u[u1] != u[u2]){
21+ u[u2] = u[u1];
22+ } else {
23+ return true ;
24+ }
25+ }
26+ return false ;
27+ }
28+
29+ int solution (int n, vector<vector<int >> edges) {
30+ int size = edges.size (), res = 0 ;
31+ for (int i=0 ; i<size; i++){
32+ int a1=edges[i][0 ], a2=edges[i][1 ];
33+ adj[a1].push_back (a2);
34+ adj[a2].push_back (a1);
35+ }
36+
37+ for (int i=1 ; i<=n; i++){
38+ int asize = adj[i].size ();
39+ if (asize < 2 || size - asize >= n-1 ){
40+ continue ;
41+ }
42+ if (!hasCycle (n, i, edges)){
43+ res+=i;
44+ }
45+ }
46+ return res;
47+ }
You can’t perform that action at this time.
0 commit comments