Compare commits
No commits in common. "cdc9464526e968ef102c1a4fb8d2f8bcd7a2b2df" and "a1480a359aa9d92551eece1f612fb9f8a169a3d0" have entirely different histories.
cdc9464526
...
a1480a359a
@ -1,31 +0,0 @@
|
|||||||
#include <algorithm>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
|
|
||||||
using ll = int;
|
|
||||||
|
|
||||||
// const ll max_n = (ll)1e6+5;
|
|
||||||
// ll a[max_n], f[max_n];
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
std::iostream::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);
|
|
||||||
ll n;
|
|
||||||
std::cin>>n;
|
|
||||||
const ll max_n = (ll)5e3+5;
|
|
||||||
ll *a = new ll[max_n], *f = new ll[max_n];
|
|
||||||
for(ll i{1};i<=n;i++){
|
|
||||||
std::cin>>a[i];
|
|
||||||
}
|
|
||||||
std::fill(f, f+max_n, 1);
|
|
||||||
ll max{};
|
|
||||||
for(ll i{2};i<=n;i++){
|
|
||||||
for(ll j{1};j<i;j++){
|
|
||||||
if(a[i]>a[j]){
|
|
||||||
f[i] = std::max(f[i], f[j]+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
max = std::max(max, f[i]);
|
|
||||||
}
|
|
||||||
std::cout<<max<<'\n';
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
#include <algorithm>
|
|
||||||
#include <bitset>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <queue>
|
|
||||||
#include <utility>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
std::iostream::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);
|
|
||||||
|
|
||||||
const ll max_n = 1e5+5;
|
|
||||||
ll n;
|
|
||||||
std::cin>>n;
|
|
||||||
auto *edge = new std::vector<ll>[max_n];
|
|
||||||
ll a, b;
|
|
||||||
for(ll i{1}; i<n; i++){
|
|
||||||
std::cin>>a>>b;
|
|
||||||
edge[a].push_back(b);
|
|
||||||
edge[b].push_back(a);
|
|
||||||
}
|
|
||||||
std::queue<std::pair<ll, ll>> q;
|
|
||||||
q.emplace(0, a);
|
|
||||||
std::bitset<max_n> vis;
|
|
||||||
vis[a]=true;
|
|
||||||
ll max_a{}, max{};
|
|
||||||
while(!q.empty()){
|
|
||||||
auto top = q.front();
|
|
||||||
q.pop();
|
|
||||||
if(top.first > max){
|
|
||||||
max = top.first;
|
|
||||||
max_a = top.second;
|
|
||||||
}
|
|
||||||
for(auto &i:edge[top.second]){
|
|
||||||
if(vis[i]){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
q.push({top.first + 1, i});
|
|
||||||
vis[i] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
q = std::queue<std::pair<ll, ll>>();
|
|
||||||
q.emplace(0, max_a);
|
|
||||||
vis.reset();
|
|
||||||
vis[max_a]=true;
|
|
||||||
ll ans{};
|
|
||||||
while(!q.empty()){
|
|
||||||
auto top = q.front();
|
|
||||||
q.pop();
|
|
||||||
ans = std::max(ans, top.first);
|
|
||||||
for(auto i: edge[top.second]){
|
|
||||||
if(vis[i]){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
q.push({top.first+1, i});
|
|
||||||
vis[i] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::cout<<ans<<'\n';
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user