#include <bits/stdc++.h>
using namespace std;
long long power(long long a, long long b, long long m) {
  long long x = 1 % m;
  a %= m;
  while (b) {
    if ((1 & b)) x = x * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return x;
}
vector<int> dir[300005];
vector<int> adj[300005], id[300005];
int t[300005], u[300005], v[300005];
int ass[300005];
bool vis[300005];
void max_dfs(int v) {
  vis[v] = true;
  for (int i = 0; i < dir[v].size(); i++) {
    int go = dir[v][i];
    if (vis[go]) continue;
    max_dfs(go);
  }
  for (int i = 0; i < adj[v].size(); i++) {
    int go = adj[v][i];
    int fx = id[v][i];
    if (ass[fx]) continue;
    if (u[fx] == v)
      ass[fx] = 1;
    else
      ass[fx] = -1;
    if (vis[go]) continue;
    max_dfs(go);
  }
}
void min_dfs(int v) {
  vis[v] = true;
  for (int i = 0; i < dir[v].size(); i++) {
    int go = dir[v][i];
    if (vis[go]) continue;
    min_dfs(go);
  }
  for (int i = 0; i < adj[v].size(); i++) {
    int go = adj[v][i];
    int fx = id[v][i];
    if (ass[fx]) continue;
    if (u[fx] == v)
      ass[fx] = -1;
    else
      ass[fx] = 1;
  }
}
int main() {
  int n, m, s;
  scanf("%d", &n);
  scanf("%d", &m);
  scanf("%d", &s);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &t[i]);
    scanf("%d", &u[i]);
    scanf("%d", &v[i]);
    if (t[i] == 1)
      dir[u[i]].push_back(v[i]);
    else {
      adj[u[i]].push_back(v[i]);
      adj[v[i]].push_back(u[i]);
      id[u[i]].push_back(i);
      id[v[i]].push_back(i);
    }
  }
  memset(vis, 0, sizeof(vis));
  memset(ass, 0, sizeof(ass));
  max_dfs(s);
  int ans = 0;
  for (int i = 1; i <= n; i++)
    if (vis[i]) ++ans;
  printf("%d\n", ans);
  for (int i = 1; i <= m; i++) {
    if (t[i] == 1) continue;
    if (ass[i] == -1)
      printf("-");
    else
      printf("+");
  }
  printf("\n");
  memset(vis, 0, sizeof(vis));
  memset(ass, 0, sizeof(ass));
  min_dfs(s);
  ans = 0;
  for (int i = 1; i <= n; i++)
    if (vis[i]) ++ans;
  printf("%d\n", ans);
  for (int i = 1; i <= m; i++) {
    if (t[i] == 1) continue;
    if (ass[i] == -1)
      printf("-");
    else
      printf("+");
  }
}
