daf

baim.  •  5个月前


include<bits/stdc++.h>

using std::max; const int MAXN = 1e4 + 5; int n, m; int deg[MAXN << 1]; bool vis[MAXN << 1]; std::vector G[MAXN << 1], vec[MAXN << 1]; void mcs(){ int p = 0; for (int i = 1; i <= n; ++i)

vec[0].push_back(i);

for (int i = 1; i <= n; ++i) {

int cur = 0;
while (!cur) {
  while (!vec[p].empty() && vis[ vec[p].back() ])
    vec[p].pop_back();
  if (vec[p].empty()) --p;
  else cur = vec[p].back();
}
vis[cur] = true;
for (int k : G[cur]) if (!vis[k]) {
  ++deg[k];
  if (deg[k] > p) ++p;
  vec[ deg[k] ].push_back(k);
}

} } int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= m; ++i) {

int x, y;
scanf("%d %d", &x, &y);
G[x].push_back(y), G[y].push_back(x);

} mcs(); int ans = 0; for (int i = 1; i <= n; ++i)

ans = max(ans, deg[i] + 1);

printf("%d\n", ans); return 0; }


评论: