10639 2024. 04. 07 15:15:22 111 Varázserdő cpp17 Elfogadva 100/100 560ms 74488 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

#define MOD 1000000007

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,M;
	cin>>N>>M;
	vector<tuple<int,int,int>>e(M);
	for(int i=0;i<M;i++){
		int a,b,c;
		cin>>a>>b>>c;
		e[i]={c,a,b};
	}
	sort(e.begin(),e.end());
	int ans=0;
	vector<int>v(N+1),w(N+1),l(N+1);
	for(int i=0;i<M;i++){
		auto[c,a,b]=e[i];
		if(l[a]!=c){
			ans+=w[a];
			v[a]=l[a]+1==c?w[a]:0;
			w[a]=0;
			l[a]=c;
		}
		if(l[b]!=c){
			ans+=w[b];
			v[b]=l[b]+1==c?w[b]:0;
			w[b]=0;
			l[b]=c;
		}
		w[a]+=v[b]+1;
		w[a]%=MOD;
		w[b]+=v[a]+1;
		w[b]%=MOD;
	}
	for(int i=1;i<=N;i++){
		ans+=w[i];
	}
	ans+=MOD-M;
	ans%=MOD;
	cout<<ans<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1976 KiB
2 Elfogadva 3ms 2088 KiB
3 Elfogadva 2ms 2092 KiB
subtask2 7/7
4 Elfogadva 3ms 2336 KiB
5 Elfogadva 3ms 2692 KiB
6 Elfogadva 7ms 3760 KiB
7 Elfogadva 7ms 3768 KiB
8 Elfogadva 293ms 49872 KiB
9 Elfogadva 280ms 50084 KiB
10 Elfogadva 272ms 50296 KiB
11 Elfogadva 264ms 50216 KiB
12 Elfogadva 259ms 50216 KiB
13 Elfogadva 259ms 50492 KiB
subtask3 9/9
14 Elfogadva 3ms 3704 KiB
15 Elfogadva 3ms 3636 KiB
16 Elfogadva 52ms 12884 KiB
17 Elfogadva 254ms 31712 KiB
18 Elfogadva 560ms 73688 KiB
19 Elfogadva 518ms 73688 KiB
20 Elfogadva 513ms 73688 KiB
subtask4 14/14
21 Elfogadva 3ms 3604 KiB
22 Elfogadva 3ms 3828 KiB
23 Elfogadva 3ms 3872 KiB
24 Elfogadva 2ms 3916 KiB
subtask5 20/20
25 Elfogadva 3ms 3968 KiB
26 Elfogadva 4ms 4180 KiB
27 Elfogadva 4ms 4184 KiB
28 Elfogadva 4ms 4268 KiB
29 Elfogadva 4ms 4356 KiB
30 Elfogadva 4ms 4268 KiB
31 Elfogadva 4ms 4188 KiB
32 Elfogadva 4ms 4504 KiB
subtask6 50/50
33 Elfogadva 7ms 5132 KiB
34 Elfogadva 52ms 13524 KiB
35 Elfogadva 497ms 51696 KiB
36 Elfogadva 508ms 51588 KiB
37 Elfogadva 536ms 74452 KiB
38 Elfogadva 550ms 74488 KiB
39 Elfogadva 547ms 74464 KiB
40 Elfogadva 537ms 74464 KiB
41 Elfogadva 517ms 55876 KiB