CF240E.Road Repairs

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

一个名叫 Berland 的国家有 nn 个城市,它们被从 11 到 nn 的整数编号。编号为 11 的城市是这个国家的首都。一些城市两两之间有一条单向道路。然而,不是所有的路都是完好的。对于每一条路我们都知道是否需要修复。如果一条路需要修复,那么它就禁止被使用。但是,Berland 的政府可以修复道路然后这条路就可以用了。

现在 Berland 正在受到邻国战争的威胁。所以首都的官员决定往每个城市送一支军队。如果他们没有钱或者时间去建一条新路那么这些军队只能够通过完好的道路。然而,为了到达一些城市一些道路可能可以修复好。

当然国家需要很多的资源去战胜敌人,所以你想要小心地计划投入军队的资源。这就是 Berland 的政府想要尽可能地修复好最少的道路让军队能从首都到每一个城市的原因,给你一些路并告诉你这条路是好的还是要修复的。你的任务就是帮助 Berland 政府并找出哪些路需要被修复。

输入格式

第一行有两个整数 n,mn,m(1≤n,m≤1051 \leq n,m \leq 10^5)——城市的数量和 Berland 的道路的数量。

接下来 mm 行包括 33 个整数 aia_i,bib_i,cic_i(1≤ai,bi≤n1 \leq a_i,b_i \leq n ,ai≠bia_i \neq b_i,0≤ci≤10 \leq c_i \leq 1),描述的是一条从 aia_i 到 bib_i 的道路,如果 cic_i 等于 0,那么给的这条路就是好的;如果 cic_i 等于 1,那么
给的这条路就是需要修理的。

保证没有重边。

输出格式

如果修复了所有的道路以后还是不能到达每个城市,输出-1。否则,第一行输出有几条路需要修复,第二行输出需要修复的路的编号,用一个空格隔开。

道路从 1 开始编号,在输入中给出。

如果有多种方案,请输出任意一种。如果所有路都是好的,请只在第一行输出 0。

输入输出样例

  • 输入#1

    3 2
    1 3 0
    3 2 1
    

    输出#1

    1
    2
    
  • 输入#2

    4 4
    2 3 0
    3 4 0
    4 1 0
    4 2 1
    

    输出#2

    -1
    
  • 输入#3

    4 3
    1 2 0
    1 3 0
    1 4 0
    

    输出#3

    0
    
    

输入解题思路,AI测评打分。不知道怎么写?

首页