社区讨论
42求调
P9954 [USACO20OPEN] Cowntact Tracing B参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj2455j
- 此快照首次捕获于
- 2025/11/03 19:28 4 个月前
- 此快照最后确认于
- 2025/11/03 19:28 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
#define double long double
#define INF 1e18
using namespace std;
struct zzz{
int t,x,y;
};
zzz a[255];
bool cmp(zzz u,zzz v){
return u.t<v.t;
}
int n,T;
string s;
int cs[105];
signed main(){
cin>>n>>T;
cin>>s;
for(int i=1;i<=T;i++) cin>>a[i].t>>a[i].x>>a[i].y;
sort(a+1,a+1+T,cmp);
int g=0;
int minn=INF,maxn=-INF;
int ans=0;
for(int i=1;i<=n;i++){
bool f=0;
for(int j=0;j<=T+1;j++){
bool f2=1;
memset(cs,-1,sizeof cs);
cs[i]=j;//每次以i作为0号病人,传染j次
for(int k=1;k<=T;k++){
if(cs[a[k].x]==-1&&cs[a[k].y]>0){//y还能传染,x没被传染
cs[a[k].y]--;//传染
cs[a[k].x]=k;
}
else if(cs[a[k].y]==-1&&cs[a[k].x]>0){
cs[a[k].x]--;
cs[a[k].y]=k;
}
else if(cs[a[k].x]>=0&&cs[a[k].y]>=0){
cs[a[k].x]=max(0LL,cs[a[k].x]-1);
cs[a[k].y]=max(0LL,cs[a[k].y]-1);
}
}
for(int k=1;k<=n;k++){
//检查
if(s[k-1]=='1'&&cs[k]==-1||s[k-1]=='0'&&cs[k]!=-1){
f2=0;
}
}
if(f2){
minn=min(minn,j);
maxn=max(maxn,j);
f=1;
}
}
ans+=f;
}
cout<<ans<<" "<<minn;
if(maxn>=T+1){
cout<<" Infinity"<<endl;
}
else{
cout<<" "<<maxn<<endl;
}
return 0;
}
//4 3
//1110
//5 1 2
//6 1 3
//7 1 4
回复
共 0 条回复,欢迎继续交流。
正在加载回复...