codeforce round615 div3 B

这道题一开始打算给每个点赋权值,再用记录路径的bfs去找可能的结果,后来看了题解发现这样子做麻烦了。观察就可以发现,给出的点要能形成一条通路,必须满足任意两个点(xi,yi),(xj,yj),其中i!=j,并且xi

 1 #include 
 2 using namespace std;
 3 int main(){
 4     int t;
 5     cin>>t;
 6     for(int i = 0;i){
 7         int n;
 8         cin>>n;
 9         vectorint,int>>a(n);
10         for(int k = 0;k){
11             cin>>a[k].first>>a[k].second;
12         }
13         sort(a.begin(),a.end());
14         pair<int,int> cur = make_pair(0,0);
15         string ans;
16         bool ok = true;
17         for(int j = 0;j){
18             int r = a[j].first - cur.first;
19             int u = a[j].second - cur.second;
20             if(r<0||u<0){
21                 cout<<"NO\n";
22                 ok = false;
23                 break;
24             }
25             ans+=string(r,'R');
26             ans+=string(u,'U');
27             cur = a[j];
28         }
29         if(ok){
30             cout<<"YES\n";
31             cout<endl;
32         }
33     }
34 }

 

你可能感兴趣的:(codeforce round615 div3 B)