답안 #158691

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
158691 2019-10-18T12:44:32 Z InfiniteJest Zamjena (COCI18_zamjena) C++14
14 / 70
16 ms 6648 KB
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <math.h>
#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];

int num(string s){
  int tot=0;
  for(int i=0;i<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<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];
  }
  for(int i=0;i<n;i++){
    cin>>vb[i];
  }
  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[i].pb(n+i);
      nodi[n+i].pb(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[n+i]==0){
        dfs(n+i,num(va[i]));
      }
      else{
        if(val[n+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[i]==0){
        dfs(i,num(vb[i]));
      }
      else{
        if(val[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";

}

Compilation message

zamjena.cpp: In function 'int num(std::__cxx11::string)':
zamjena.cpp:28:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<s.length();i++){
               ~^~~~~~~~~~~
zamjena.cpp: In function 'void dfs(int, int)':
zamjena.cpp:37:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<nodi[k].size();i++){
               ~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 6008 KB Output is correct
2 Correct 7 ms 6136 KB Output is correct
3 Correct 7 ms 6008 KB Output is correct
4 Correct 7 ms 6136 KB Output is correct
5 Correct 7 ms 6136 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 6136 KB Output is correct
2 Incorrect 7 ms 6136 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 6008 KB Output is correct
2 Correct 7 ms 6136 KB Output is correct
3 Incorrect 7 ms 6136 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 6140 KB Output is correct
2 Correct 7 ms 6136 KB Output is correct
3 Incorrect 9 ms 6264 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 6648 KB Output isn't correct
2 Halted 0 ms 0 KB -