Skip to content

Commit fc1f62f

Browse files
committed
싸이클제거(효율성 통과x)
1 parent 5681178 commit fc1f62f

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
}

0 commit comments

Comments
 (0)