Submission #1229455

#TimeUsernameProblemLanguageResultExecution timeMemory
1229455raspyNewspapers (CEOI21_newspapers)C++20
4 / 100
1 ms328 KiB
#include <bits/stdc++.h>

#define vi vector<int>
#define int long long
#define pb push_back
#define all(x) (x).begin(), (x).end()

using namespace std;

const int N = 1e3+5;

vi graf[N];
int njgl=0;
int naj=0;

void dfs(int u, int p=-1, int gl=0)
{
	if (gl>njgl)
		naj=u, njgl=gl;
	for (int v:graf[u])
		if (v!=p)
			dfs(v, u, gl+1);
}

bool mz=1;
int preveri(int u, int p=-1)
{
	int sm = 0; vi o;
	for (int v:graf[u])
		if (v!=p)
			o.pb(preveri(v, u));
	sort(all(o));
	if (o.size()>1 && o[0]>=2)
		mz=0;
	if (o.size())
		sm=o.back();
	return sm+1;
}

signed main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < m; i++)
	{
		int u, v;
		cin >> u >> v;
		graf[u].pb(v);graf[v].pb(u);
	}
	if (m!=n-1)
	{
		cout << "NO\n";
		return 0;
	}
	dfs(0);
	njgl=0;
	dfs(naj);
	int t = preveri(naj);
	if (mz)
		cout << "YES\n1\n1\n";
	else
		cout << "NO\n";
	return 0;
}










#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...