
注意给a[ 0 ]赋一个最小值
- #include
- using namespace std;
- typedef long long ll;
- const int N=1e5+5;
- int t,n,m,a[N],cnt[N];
- int main(){
- scanf("%d",&t);
- while(t--){
- scanf("%d%d",&n,&m);
- for(int i=1;i<=n;i++){
- scanf("%d",&a[i]);
- }
- memset(cnt,0,sizeof cnt);
- while(m--){
- int x,y;
- scanf("%d%d",&x,&y);
- cnt[x]++,cnt[y]--;
- }
- int f=1;
- a[0]=-0x3f3f3f3f;
- for(int i=1;i<=n;i++){
- a[i]+=cnt[i];
- if(a[i]-1]){
- puts("No");
- f=0;
- break;
- }
- }
- if(f) puts("Yes");
- }
- return 0;
- }