Submission #218662

#TimeUsernameProblemLanguageResultExecution timeMemory
218662jjaewon산만한 고양이 (KOI17_cat)C++14
12 / 100
2079 ms10856 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
#define fi first
#define se second
#define endl '\n'
#define y1 holyshit
const int inf=0x3f3f3f3f;

int N,M;
pii edge[300010];

int p[300010];
int find(int x){ return x==p[x]?x:p[x]=find(p[x]); }
bool merge(int x,int y){
	x=find(x); y=find(y);
	if(x==y) return false;
	return p[x]=y;
}
bool solve(int x){
	for(int i=1;i<=N;i++) p[i]=i;
	for(int i=0;i<M;i++){
		if(edge[i].fi==x||edge[i].se==x) continue;
		if(!merge(edge[i].fi,edge[i].se)) return false;
	}
	return true;
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin>>N>>M;
    for(int i=0;i<M;i++){
    	cin>>edge[i].fi>>edge[i].se;
    	if(edge[i].fi>edge[i].se) swap(edge[i].fi,edge[i].se);
    }
    int ans=0;
    for(int i=1;i<=N;i++) if(solve(i)) ans+=i;
    cout<<ans;
    return 0;
}

Compilation message (stderr)

cat.cpp: In function 'bool merge(int, int)':
cat.cpp:20:13: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
  return p[x]=y;
         ~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...