Die vorherigen Fragen des Blue Bridge Cup (2014) REV-22 King's Probleme

Untersuche die Frage sorgfältig, diese Frage wird verwendet und überprüft ... Frag mich nicht warum ...

Problembeschreibung

  Land C besteht aus n Inseln. Um die Kommunikation zwischen den Inseln zu erleichtern, hat Land C m Brücken zwischen den Inseln gebaut, wobei jede Brücke zwei Inseln verbindet. Es kann mehrere Brücken zwischen den beiden Inseln geben. Aufgrund der Meerwassererosion besteht jedoch die Gefahr, dass einige Brücken unbrauchbar werden.
  Wenn nicht alle Brücken zwischen den beiden Inseln verwendet werden können, können die beiden Inseln nicht direkt erreicht werden. Solange sich die Bewohner dieser beiden Inseln jedoch über andere Brücken oder andere Inseln erreichen können, geht es ihnen gut. Wenn es jedoch einen Weg gäbe, die beiden Inseln am Tag zuvor und am Tag nach ihrer Ankunft nicht zu erreichen, würden die Bewohner gemeinsam protestieren.
  Jetzt weiß der König von Land C bereits, wie viele Tage jede Brücke nutzen kann, und darüber hinaus kann sie nicht mehr benutzt werden. Jetzt will er wissen, wie viele Tage die Bewohner protestieren werden.

Eingabeformat

  Die erste Zeile der Eingabe enthält zwei ganze Zahlen n, m, die die Anzahl der Inseln und die Anzahl der Brücken darstellen.
  In den nächsten m Zeilen geben drei ganze Zahlen a, b und t in jeder Zeile an, dass die Brücke zwei Inseln a und b verbindet und für t Tage verwendet werden kann. Die Anzahl der Inseln erhöht sich von 1.

Ausgabeformat

  Es wird eine Ganzzahl ausgegeben, die angibt, wie viele Tage die Bewohner protestieren werden.

Beispieleingabe

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

Beispielausgabe

2

Beispielbeschreibung

  Die Brücke zwischen 2 und 3 kann nach dem ersten Tag nicht mehr benutzt werden und ist nicht betroffen.
  Die Brücke zwischen 1 und 2 und zwischen 1 und 3 kann nach dem nächsten Tag nicht mehr benutzt werden, und die Bewohner werden protestieren.
  Die Brücke zwischen 3 und 4 kann nach dem dritten Tag nicht mehr benutzt werden, und die Bewohner werden protestieren.

Datengröße und Übereinstimmung

  Für 30% der Daten gilt 1 <= n <= 20, 1 <= m <= 100;
  für 50% der Daten 1 <= n <= 500, 1 <= m <= 10000;
  für 100% der Daten 1 <= n <= 10000, 1 <= m <= 100000, 1 <= a, b <= n, 1 <= t <= 100000.

1 #include <iostream>
 2 #include <algorithm>
 3  using  namespace std;
4  int n, m;
5  int Vater [ 10000 + 5 ];
6  Strukturbrücke {
 7      int sta;
8      int endd;
9      int t;
10 } bri [ 100000 + 5 ];
11  int cmp (Brücke a, Brücke b) {
 12      Rückkehr bei> bt;
13  }
 14  void  set() { // Initialisierung des Elternknotens (der erste Elternknoten ist selbst) 
15      für ( int i = 1 ; i <= n; i ++ ) {
 16          Vater [i] = i;
 17      }
 18      return ;
 19  }
 20  / / Und überprüfe Menge 
21  int find ( int a) { // Finde rekursiv den Wurzelknoten 
22      if (Vater [a] == a) // Der Knoten, dessen Elternknoten selbst der Wurzelknoten 
23 ist          , gibt a zurück;
 24      return find (Vater [ a]);
 25  }
 26  int unionbridge ( inta, int b) { // Bestimmen Sie, ob es sich um denselben Baum handelt, und bestimmen Sie, ob die beiden Punkte direkt (indirekt) 
27      int fa = find (a);
 28      int fb = find (b) erreichen können );
 29      if (fa! = Fb) { // Bäume zusammenführen, die nicht derselbe Wurzelknoten sind, dh die Situation, die nicht erreicht werden kann 
30          dad [fa] = fb;
 31          return  1 ;
 32      }
 33      return  0 ; // Can direct ( Indirekt) erreichen 
34  }
 35  
36   
37  int main () {
 38      cin >> n >> m;
 39      int num = m;
40      int a, b, t;
41      int i = 1 ;
42      while (num-- ) {
 43          cin >> a >> b >> t;
44          bri [i] .sta = a;
45          bri [i] .endd = b;
46          bri [i] .t = t;
47          i ++ ;
48      }
 49      int pre = - 1 ;
50      int ans = 0 ;
51      sort (bri + 1 , bri + m + 1 , cmp); 
52      set ();
53      für ( int i = 1 ; i <= m; i ++ ) {
 54          if (unionbridge (bri [i] .sta, bri [i] .endd) && pre! = Bri [i] .t) { // Das Urteil wird Kein Unfall, und notieren Sie die Anzahl der Tage mit Problemen 
55              ans ++ ;
 56              pre = bri [i] .t;
 57          }
 58      }
 59      cout << ans << endl;
 60      
61      
62 }

Ich denke du magst

Origin www.cnblogs.com/memocean/p/12723376.html
Empfohlen
Rangfolge