比赛 |
CSP2023-J模拟赛 |
评测结果 |
WWWWTTTTTT |
题目名称 |
新建题目 |
最终得分 |
0 |
用户昵称 |
xuuu |
运行时间 |
6.000 s |
代码语言 |
C++ |
内存使用 |
15.47 MiB |
提交时间 |
2023-10-18 20:09:53 |
显示代码纯文本
#include<bits/stdc++.h>
#define inf 0x3f3f3f
using namespace std;
inline int read(){
int x = 0,f = 1;
char ch = getchar();
while(ch < '0'||ch > '9')
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
x = x * 10 + ch - '0',ch = getchar();
return x*f;
}
int n,u,v,mp[2050][2050],p[2050],cnt,m;
bool vis[2050][2050];
int main(){
freopen("touch.in","r",stdin);
freopen("touch.out","w",stdout);
n = read();
for(int i = 1;i <= n;i ++) cin>>p[i];
for(int i = 1;i <= n;i ++){
for(int j = 1;j <= n;j ++){
if(i == j) mp[i][j] = 0;
else mp[i][j] = inf;
}
}
for(int i = 1;i <= n - 1;i ++){
cin>>u>>v;
mp[u][v] = 1;
mp[v][u] = 1;
}
for(int k = 1;k <= n;k ++){
for(int i = 1;i <= n;i ++){
for(int j = 1;j <= n;j ++){
if(mp[i][j] > mp[i][k] + mp[k][j]){
mp[i][j] = mp[i][k] + mp[k][j];
}
}
}
}
for(int x = 1;x <= n;x ++){
for(int y = 1;y <= n;y ++){
if(mp[1][x] > mp[1][y] && p[x] > p[y] && vis[x][y]){
cnt ++;
vis[y][x] = 1;
}
}
}
cout<<cnt;
return 0;
}