#include<bits/stdc++.h>
using namespace std;
struct Node{
int lson,rson;
}node[25];
int vis[25];
int dfs(int i)
{
if(i==-1) return 0;
return 1+max(dfs(node[i].lson),dfs(node[i].rson));
}
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
{
node[i].lson=-1;
node[i].rson=-1;
}
for(int i=1;i<n;i++)
{
int x,y;cin>>x>>y;
if(node[x].lson==-1) node[x].lson=y;
else node[x].rson=y;
vis[y]=1;
}
int root=0;
for(int i=1;i<=n;i++) if(vis[i]==0) root=i;
cout<<dfs(root);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct Node{
int lson,rson;
}node[105];
void bfs(int i)
{
queue<int> q;
q.push(i);
while(!q.empty())
{
int u=q.front();q.pop();
cout<<u<<" ";
if(node[u].lson!=-1) q.push(node[u].lson);
if(node[u].rson!=-1) q.push(node[u].rson);
}
}
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
{
int l,r;cin>>l>>r;
node[i].lson=l;
node[i].rson=r;
}
bfs(1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
const int maxw=1005;
int f[maxn][maxw];//f[i][j]考虑前i物品,容量为j的背包获得的最大价值
// f[i][j]= max(f[i-1][j],f[i-1][j-w[i]]+v[i])
int v[maxn],w[maxn];
int main()
{
int n,W;cin>>n>>W;
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
for(int i=1;i<=n;i++)
{
cin>>w[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=W;j++)
{
f[i][j]=f[i-1][j];
if(j-w[i]>=0) f[i][j] =max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
}
}
cout<<f[n][W];
}
#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
int f[maxn];
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
struct edge{
int u,v,w;
bool operator < (const edge& a){return w<a.w;}
};
int main()
{
vector<edge> e;
int n;cin>>n;
for(int i=1;i<=n;i++) f[i]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int w;cin>>w;
edge temp;
temp.u=i;temp.v=j;temp.w=w;
e.push_back(temp);
}
sort(e.begin(),e.end());
long long ans=0;
for(int i=0;i<e.size();i++)
{
int u=e[i].u,v=e[i].v,w=e[i].w;
if(find(u)==find(v)) continue;
ans+=w;
f[find(u)]=find(v);
}
cout<<ans;
}
评论区