A. Countdown

#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
string s;
cin >> s;
int sum = 0, cnt = 0;
for (int i = 0; i < n;i++){
sum += s[i] - '0';
if(s[i]-'0'!=0&&i!=n-1)
cnt++;
}
sum = sum + cnt;
cout << sum << "\n";
}
return 0;
}
B. Swaps

在这里插入代码片
C. Book

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int inf = 2e18 + 100;
const int maxn = 2e5 + 100;
vector<int> g[maxn];
int d[maxn], in[maxn];
queue<int> q;
signed main()
{
IOS
int tt;
cin>>tt;
while(tt--){
while(!q.empty())
q.pop();
int n;
cin>>n;
int sum=n;
for(int i=1;i<=n;i++)g[i].clear();
memset(d,0,sizeof(int)*(n+10));
memset(in,0,sizeof(int)*(n+10));
for(int i=1;i<=n;i++){
int k;
cin>>k;
if(k==0){
d[i]=1;
q.push(i);
sum--;
}
for(int j=1;j<=k;j++){
int x;
cin>>x;
g[x].push_back(i);
in[i]++;
}
}
while(!q.empty()){
int x=q.front();
q.pop();
for(auto it:g[x]){
in[it]--;
if(in[it]==0){
q.push(it);
sum--;
}
if(it>x){
d[it]=max(d[it],d[x]);
}
else{
d[it]=max(d[it],d[x]+1);
}
}
}
if(sum!=0)
cout<<"-1"<<"\n";
else{
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,d[i]);
}
cout<<ans<<"\n";
}
}
}