比赛 |
EYOI与SBOI开学欢乐赛5th |
评测结果 |
AAEAW |
题目名称 |
SERNET模拟 |
最终得分 |
60 |
用户昵称 |
Skloud |
运行时间 |
0.940 s |
代码语言 |
C++ |
内存使用 |
1.35 MiB |
提交时间 |
2022-09-16 21:10:04 |
显示代码纯文本
#include<cstdio>
#include<queue>
using namespace std;
struct node{
int x,t;
node(){}
node(int a,int b){x=a,t=b;}
};
int n,m,k,t;
int x,y,z,u;
int ne[210],v[210],head[35],w[210],tot;
node time[30005];int ttot;
bool fu[101],vis[105];
inline void add(int x,int y,int z)
{
w[++tot]=z;
v[tot]=y;
ne[tot]=head[x];
head[x]=tot;
}
void bfs()
{
queue <node> q;
q.push(node(z,y));
while(!q.empty())
{
int t=q.front().x,l=q.front().t;q.pop();
if(vis[t]) continue;
vis[t]=1;
for(int p=head[t];p;p=ne[p])
{
if(vis[p]||u==v[p]||z==v[p]) continue;
//printf("%d ",v[p]);
time[++ttot]=node(l,l+w[p]-1);
q.push(node(v[p],l+w[p]));
}
}
}
int main()
{
freopen("sernet.in","r",stdin);
freopen("sernet.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){scanf("%d",&x);fu[x]=1;}
scanf("%d",&m);
for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);add(x,y,z);add(y,x,z);}
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d%d%d%d",&x,&y,&z,&u);
if(fu[z]) bfs();
for(int j=1;j<=100;j++) vis[j]=0;
}
scanf("%d",&t);
int ans=0;
for(int i=1;i<=ttot;i++) if(t>=time[i].x&&t<=time[i].t) ans++;
printf("%d",ans);
}