Submission #158696

#TimeUsernameProblemLanguageResultExecution timeMemory
158696InfiniteJestZamjena (COCI18_zamjena)C++14
70 / 70
198 ms11356 KiB
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <math.h>
#include <map>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;

ifstream in("input.txt");
ofstream out("output.txt");

typedef long long ll;

int n;
vector<int> nodi[110000];
string va[50001];
string vb[50001];
int val[110000];
bool flag=1;
bool vis[110000];
map<string,int> indexes;
int indtot=1;

int num(string s){
  int tot=0;
  for(int i=0;i<(int)s.length();i++){
    tot=tot*10+s[i]-48;
  }
  return tot;
}

void dfs(int k, int f){
  vis[k]=1;
  val[k]=f;
  for(int i=0;i<(int)nodi[k].size();i++){
    if(!vis[nodi[k][i]]){
      vis[nodi[k][i]]=1;
      dfs(nodi[k][i],f);
    }
  }

}

int main(){
  cin>>n;
  for(int i=0;i<n;i++){
    cin>>va[i];
    if(indexes[va[i]]==0){
      indexes[va[i]]=indtot;
      indtot++;
    }
  }
  for(int i=0;i<n;i++){
    cin>>vb[i];
    if(indexes[vb[i]]==0){
      indexes[vb[i]]=indtot;
      indtot++;
    }
  }
  for(int i=0;i<n;i++){
    if(va[i][0]>='a'&&va[i][0]<='z'&&vb[i][0]>='a'&&vb[i][0]<='z'){
      nodi[indexes[va[i]]].pb(indexes[vb[i]]);
      nodi[indexes[vb[i]]].pb(indexes[va[i]]);
    }
  }
  for(int i=0;i<n;i++){
    if(va[i][0]>='0'&&va[i][0]<='9'&&(vb[i][0]<'0'||vb[i][0]>'9')){
      if(val[indexes[vb[i]]]==0){
        dfs(indexes[vb[i]],num(va[i]));
      }
      else{
        if(val[indexes[vb[i]]]!=num(va[i])){
          flag=0;
          break;
        }
      }
    }
    else if((va[i][0]<'0'||va[i][0]>'9')&&(vb[i][0]>='0'&&vb[i][0]<='9')){
      if(val[indexes[va[i]]]==0){
        dfs(indexes[va[i]],num(vb[i]));
      }
      else{
        if(val[indexes[va[i]]]!=num(vb[i])){
          flag=0;
          break;
        }
      }
    }
    else if((va[i][0]>='0'&&va[i][0]<='9')&&vb[i][0]>='0'&&vb[i][0]<='9'){
      if(num(va[i])!=num(vb[i])){
        flag=0;
        break;
      }
    }
  }
  if(flag)cout<<"DA";
  else cout<<"NE";

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...