QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#349997 | #6723. Grid with Arrows | wudibaolong# | RE | 0ms | 3620kb | C++14 | 2.1kb | 2024-03-10 11:38:40 | 2024-03-10 11:38:40 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
#define endl '\n'
int G[N];
int du[N];
char arrow[N];
int val[N];
int st[N];
int find_set(int x)
{
if(st[x] != x) st[x] = find_set(st[x]);
return st[x];
}
void union_set(int a,int b)
{
int fa=find_set(a),fb=find_set(b);
st[fa] = fb;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<n*m;i++) st[i]=i;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
char ch;
scanf(" %c",&ch);
arrow[i*m+j]=ch;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
int num;
scanf("%d",&num);
val[i*m+j]=num;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arrow[i*m+j] == 'u')
{
int num=(i-val[i*m +j])*m +j;
G[i*m + j] = num;
du[i*m+j]++;
du[num]--;
union_set(i*m+j,num);
}
else if(arrow[i*m+j] == 'd')
{
int num=(i+val[i*m +j])*m +j;
G[i*m + j] = num;
du[i*m+j]++;
du[num]--;
union_set(i*m+j,num);
}
else if(arrow[i*m+j] == 'l')
{
int num=i*m +j-val[i*m +j];
G[i*m + j] = num;
du[i*m+j]++;
du[num]--;
union_set(i*m+j,num);
}
else if(arrow[i*m+j] == 'r')
{
int num=i*m +j+val[i*m +j];
G[i*m + j] = num;
du[i*m+j]++;
du[num]--;
union_set(i*m+j,num);
}
}
}
bool flag=1;
int root=find_set(0);
for(int i=0;i<n*m;i++)
if(find_set(i) != root) flag=0;
if(!flag)
{
cout<<"No"<<endl;
// cout<<"未联通"<<endl;
// for(int i=0;i<n*m;i++)
// {
//
// cout<<i<<" "<<G[i]<<" "<<endl;
// cout<<arrow[i]<<" "<<val[i]<<endl;
// }
continue;
}
int cnt_1 = 0, cnt1=0;
for(int i=0;i<n*m;i++)
{
if(du[i] == -1) cnt_1++;
if(du[i] == 1) cnt1++;
}
if(cnt_1 == 1 && cnt1 == 1)
{
cout<<"Yes"<<endl;
}
else if(cnt_1 == 0 && cnt1 == 0)
{
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3620kb
input:
2 2 3 rdd url 2 1 1 1 1 2 2 2 rr rr 1 1 1 1
output:
Yes No
result:
ok 2 token(s): yes count is 1, no count is 1
Test #2:
score: -100
Runtime Error
input:
1109 5 8 rddddldl drruludl rrldrurd urrrlluu uurrulrl 4 4 1 2 4 3 1 6 1 3 5 1 1 1 3 6 2 4 1 1 2 1 1 1 2 3 4 2 4 3 3 3 4 1 1 2 2 5 1 5 7 9 rdrddrdll urrdruldl ruullrulu drrlrlddl rrrdddlll ruulururl ruurrlluu 7 1 1 1 2 1 2 3 6 1 7 3 1 3 1 2 1 8 2 2 1 2 4 3 1 2 2 2 2 4 1 1 5 3 3 1 3 4 6 1 2 1 2 7 7 6 ...