CF786E.ALT

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

ALT is a planet in a galaxy called "Encore". Humans rule this planet but for some reason there's no dog in their planet, so the people there are sad and depressed. Rick and Morty are universal philanthropists and they want to make people in ALT happy.

ALT has nn cities numbered from 11 to nn and n1n-1 bidirectional roads numbered from 11 to n1n-1 . One can go from any city to any other city using these roads.

There are two types of people in ALT:

  1. Guardians. A guardian lives in a house alongside a road and guards the road.
  2. Citizens. A citizen lives in a house inside a city and works in an office in another city.

Every person on ALT is either a guardian or a citizen and there's exactly one guardian alongside each road.

Rick and Morty talked to all the people in ALT, and here's what they got:

  • There are mm citizens living in ALT.
  • Citizen number ii lives in city number xix_{i} and works in city number yiy_{i} .
  • Every day each citizen will go through all roads along the shortest path from his home to his work.
  • A citizen will be happy if and only if either he himself has a puppy himself or all of guardians along his path to his work has a puppy (he sees the guardian's puppy in each road and will be happy).
  • A guardian is always happy.

You need to tell Rick and Morty the minimum number of puppies they need in order to make all people in ALT happy, and also provide an optimal way to distribute these puppies.

输入格式

The first line of input contains two integers nn and mm ( 2<=n<=2×1042<=n<=2×10^{4} , 1<=m<=1041<=m<=10^{4} ) — number of cities and number of citizens respectively.

The next n1n-1 lines contain the roads, ii -th line contains endpoint of ii -th edge, vv and uu ( 1<=v,u<=n1<=v,u<=n , vuv≠u ).

The next mm lines contain the information about citizens. ii -th line contains two integers xix_{i} and yiy_{i} ( 1<=xi,yi<=n1<=x_{i},y_{i}<=n , xiyix_{i}≠y_{i} ).

输出格式

In the first line of input print a single integer kk , the total number of puppies they need ( 1<=k<=n1<=k<=n ).

In the second line print an integer qq , the number of puppies to give to citizens, followed by qq distinct integers a1,a2,...,aqa_{1},a_{2},...,a_{q} , index of citizens to give puppy to ( 0<=q<=min(m,k)0<=q<=min(m,k) , 1<=ai<=m1<=a_{i}<=m ).

In the third line print an integer ee , the number of puppies to give to guardians, followed by ee distinct integers b1,b2,...,beb_{1},b_{2},...,b_{e} , index of road of guardians to give puppy to ( 0<=e<=min(n1,k)0<=e<=min(n-1,k) , 1<=bi<=n11<=b_{i}<=n-1 ).

Sum of qq and ee should be equal to kk .

输入输出样例

  • 输入#1

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

    输出#1

    3
    1 5 
    2 3 1 
    
  • 输入#2

    4 7
    3 4
    1 4
    2 1
    4 2
    4 2
    2 4
    1 4
    2 1
    3 1
    4 2
    

    输出#2

    3
    1 6 
    2 2 3 
    

说明/提示

Map of ALT in the first sample testcase (numbers written on a road is its index):

Map of ALT in the second sample testcase (numbers written on a road is its index):

首页