关于此题92分?
查看原帖
关于此题92分?
541382
BelowHorizon楼主2021/11/1 09:04
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;

vector <int> V[N];
int flag,MAX = 0,ans = 0;
int apr[N],vis[N],in[N],out[N],alr[N][N];
void dfs (int u) {
	vis[u] = 1;
	if (in[u] != out[u]) flag = 1;
	for (int i = 0;i < V[u].size ();i ++) {
		int v = V[u][i]; if (vis[v]) continue;
		dfs (v);
	}
}
int main () {
	int n; cin >> n;
	for (int i = 1;i <= n;i ++) {
		int l,r; cin >> l >> r;
		in[r] ++;
		out[l] ++;
		apr[l] = apr[r] = 1;
		MAX = max (MAX,max (l,r));
		if (!alr[l][r]) V[l].push_back (r);
		alr[l][r] = 1; 
	} 
	for (int i = 1;i <= MAX;i ++) {
		if (apr[i] && ! vis[i]) {
			flag = 0;
			dfs (i);	
			if (! flag) ans ++;
		}
	}
	for (int i = 1;i <= MAX;i ++) {
		ans += max (in[i],out[i]);
	}	
	cout << ans << "\n";
	return 0;
}


2021/11/1 09:04
加载中...