#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int main(){     int n,k;     cin>>n>>k;     int ans=0;     queue<int> que;     que.push(n);     while (!que.empty()){         int fron=que.front();         que.pop();         if ((fron+k)%2==0 && fron>k){             int lar=(fron+k)/2;             int sma=fron-lar;                          que.push(lar);             que.push(sma);         }else{             ans++;         }     }     cout<<ans<<endl;     return 0; } 第二题部队 第三题 #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <iostream> #include <vector> #include <queue> using namespace std; int main(){ int n; cin>>n; int indegree[100001]; memset(indegree,0,sizeof indegree); bool vis[100010]; memset(vis,false,sizeof vis); map<int,vector<int>>m; for (int i=1;i<n;i++){ int u,v; cin>>u>>v; indegree[u]++; indegree[v]++; m[v].push_back(u); m[u].push_back(v); } queue<int> que; int count=0; for (int i=1;i<=n;i++){ if (indegree[i]<=1){ que.push(i); vis[i]=true; count++; } } int ans[100010]; int index=0; while (!que.empty()){ index++; int temp=0; for (int i=1;i<=count;i++){ int fron=que.front(); que.pop(); ans[fron]=index; for (int k=0;k<m[fron].size();k++){ indegree[m[fron][k]]--; if (indegree[m[fron][k]]<=1 && vis[m[fron][k]]==false){ vis[m[fron][k]]=true; que.push(m[fron][k]); temp++; } } } count=temp; } for (int i=1;i<=n;i++){ if (i!=n) cout<<ans[i]<<" "; else cout<<ans[i]<<endl; } return 0; }
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:35
点赞 评论 收藏
分享
Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务