Friends or not题解

看见数据 n,d1000n,d\le 1000,可以想到直接暴力。

每次判断 i,ji,j 两条信息是否符合要求便可。注意查重。这里我使用的是 pair<string,string>,因为我比较懒(逃~)

注意题目中给的是:0<tjtid0<t_j-t_i\le d,别看成 0tjtid0\le t_j-t_i\le d

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct mail{
      string a,b;
      int t;
}x[10008];
string ans1[10008],ans2[10008];
map<pair<string,string>,bool> q;
signed main()
{
      int n,d,ans=0;
      cin>>n>>d;
      for(int i=1;i<=n;i++) cin>>x[i].a>>x[i].b>>x[i].t;
      for(int i=1;i<=n;i++)
          for(int j=i+1;j<=n;j++)
          {
              if(x[i].a==x[j].b&&x[i].b==x[j].a&&0<x[j].t-x[i].t&&x[j].t-x[i].t<=d)
              {
                  if(q[{x[i].a,x[i].b}]==0)
                  {
                      ans1[++ans]=x[i].a,ans2[ans]=x[i].b;
                      q[{x[i].a,x[i].b}]=1;
                      q[{x[i].b,x[i].a}]=1;
                  }
              }
          }
      cout<<ans<<endl;
      while(ans)
      {
          cout<<ans1[ans]<<" "<<ans2[ans]<<'\n';
          ans--;
      }
      return 0;
}
posted @ 2024-02-14 20:53  sLMxf  阅读(16)  评论(0)    收藏  举报  来源