10633 2024. 04. 07 14:28:12 111 Varázserdő cpp17 Hibás válasz 7/100 3.836s 504308 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<vector<pair<int,int>>>g(N+1);
	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.rbegin(),e.rend());
	for(int i=0;i<M;i++){
		auto[c,a,b]=e[i];
		g[a].emplace_back(b,c);
		g[b].emplace_back(a,c);
	}
	vector<int>v(N+1);
	vector<unordered_map<int,int>>w(N+1);
	auto dfs=[&](auto self,int i)->void{
		for(auto[j,c]:g[i]){
			if(v[j]){
				continue;
			}
			v[j]=v[i]+1;
			self(self,j);
			w[i][c]+=w[j][c+1]+1;
			w[i][c]%=MOD;
		}
	};
	for(int i=1;i<=N;i++){
		if(v[i]){
			continue;
		}
		v[i]=1;
		dfs(dfs,i);
	}
	auto dfs2=[&](auto self,int i)->void{
		for(auto[j,c]:g[i]){
			if(v[j]){
				w[i][c]+=w[j][c+1]+1;
				w[i][c]%=MOD;
				continue;
			}
			v[j]=v[i]+1;
			self(self,j);
		}
	};
	fill(v.begin(),v.end(),0);
	for(int i=1;i<=N;i++){
		if(v[i]){
			continue;
		}
		v[i]=1;
		dfs2(dfs2,i);
	}
	int ans=0;
	for(int i=1;i<=N;i++){
		for(auto[x,y]:w[i]){
			ans+=y;
			ans%=MOD;
		}
	}
	ans-=M;
	cout<<ans<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1892 KiB
2 Elfogadva 3ms 2124 KiB
3 Elfogadva 3ms 2348 KiB
subtask2 7/7
4 Elfogadva 3ms 2724 KiB
5 Elfogadva 4ms 3684 KiB
6 Elfogadva 16ms 11792 KiB
7 Elfogadva 18ms 12604 KiB
8 Elfogadva 1.253s 470932 KiB
9 Elfogadva 981ms 469776 KiB
10 Elfogadva 1.118s 467956 KiB
11 Elfogadva 852ms 469792 KiB
12 Elfogadva 967ms 475088 KiB
13 Elfogadva 963ms 477812 KiB
subtask3 0/9
14 Hibás válasz 3ms 49292 KiB
15 Hibás válasz 4ms 50200 KiB
16 Hibás válasz 215ms 120684 KiB
17 Hibás válasz 1.062s 202624 KiB
18 Hibás válasz 3.836s 504308 KiB
19 Hibás válasz 2.032s 402584 KiB
20 Hibás válasz 2.118s 411844 KiB
subtask4 0/14
21 Hibás válasz 3ms 22760 KiB
22 Hibás válasz 3ms 22996 KiB
23 Hibás válasz 3ms 23080 KiB
24 Hibás válasz 3ms 23068 KiB
subtask5 0/20
25 Hibás válasz 4ms 23924 KiB
26 Hibás válasz 8ms 25824 KiB
27 Hibás válasz 8ms 24968 KiB
28 Hibás válasz 8ms 25676 KiB
29 Hibás válasz 8ms 25532 KiB
30 Hibás válasz 8ms 25360 KiB
31 Hibás válasz 8ms 24796 KiB
32 Hibás válasz 8ms 24900 KiB
subtask6 0/50
33 Hibás válasz 20ms 30784 KiB
34 Hibás válasz 321ms 101104 KiB
35 Hibás válasz 866ms 162564 KiB
36 Hibás válasz 913ms 195188 KiB
37 Hibás válasz 2.601s 446864 KiB
38 Hibás válasz 2.197s 468404 KiB
39 Hibás válasz 3.368s 500580 KiB
40 Hibás válasz 3.124s 486872 KiB
41 Hibás válasz 1.664s 262572 KiB