CF883G.Orientation of Edges

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Vasya has a graph containing both directed (oriented) and undirected (non-oriented) edges. There can be multiple edges between a pair of vertices.

Vasya has picked a vertex ss from the graph. Now Vasya wants to create two separate plans:

  1. to orient each undirected edge in one of two possible directions to maximize number of vertices reachable from vertex ss ;
  2. to orient each undirected edge in one of two possible directions to minimize number of vertices reachable from vertex ss .

In each of two plans each undirected edge must become directed. For an edge chosen directions can differ in two plans.

Help Vasya find the plans.

输入格式

The first line contains three integers nn , mm and ss ( 2<=n<=31052<=n<=3·10^{5} , 1<=m<=31051<=m<=3·10^{5} , 1<=s<=n1<=s<=n ) — number of vertices and edges in the graph, and the vertex Vasya has picked.

The following mm lines contain information about the graph edges. Each line contains three integers tit_{i} , uiu_{i} and viv_{i} ( 1<=ti<=21<=t_{i}<=2 , 1<=ui,vi<=n1<=u_{i},v_{i}<=n , uiviu_{i}≠v_{i} ) — edge type and vertices connected by the edge. If ti=1t_{i}=1 then the edge is directed and goes from the vertex uiu_{i} to the vertex viv_{i} . If ti=2t_{i}=2 then the edge is undirected and it connects the vertices uiu_{i} and viv_{i} .

It is guaranteed that there is at least one undirected edge in the graph.

输出格式

The first two lines should describe the plan which maximizes the number of reachable vertices. The lines three and four should describe the plan which minimizes the number of reachable vertices.

A description of each plan should start with a line containing the number of reachable vertices. The second line of a plan should consist of ff symbols '+' and '-', where ff is the number of undirected edges in the initial graph. Print '+' as the jj -th symbol of the string if the jj -th undirected edge (u,v)(u,v) from the input should be oriented from uu to vv . Print '-' to signify the opposite direction (from vv to uu ). Consider undirected edges to be numbered in the same order they are given in the input.

If there are multiple solutions, print any of them.

输入输出样例

  • 输入#1

    2 2 1
    1 1 2
    2 2 1
    

    输出#1

    2
    -
    2
    +
    
  • 输入#2

    6 6 3
    2 2 6
    1 4 5
    2 3 4
    1 4 1
    1 3 1
    2 2 3
    

    输出#2

    6
    ++-
    2
    +-+
    
首页