106332024-04-07 14:28:12111Varázserdőcpp17Hibás válasz 7/1003.836s504308 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Elfogadva3ms2124 KiB
3Elfogadva3ms2348 KiB
subtask27/7
4Elfogadva3ms2724 KiB
5Elfogadva4ms3684 KiB
6Elfogadva16ms11792 KiB
7Elfogadva18ms12604 KiB
8Elfogadva1.253s470932 KiB
9Elfogadva981ms469776 KiB
10Elfogadva1.118s467956 KiB
11Elfogadva852ms469792 KiB
12Elfogadva967ms475088 KiB
13Elfogadva963ms477812 KiB
subtask30/9
14Hibás válasz3ms49292 KiB
15Hibás válasz4ms50200 KiB
16Hibás válasz215ms120684 KiB
17Hibás válasz1.062s202624 KiB
18Hibás válasz3.836s504308 KiB
19Hibás válasz2.032s402584 KiB
20Hibás válasz2.118s411844 KiB
subtask40/14
21Hibás válasz3ms22760 KiB
22Hibás válasz3ms22996 KiB
23Hibás válasz3ms23080 KiB
24Hibás válasz3ms23068 KiB
subtask50/20
25Hibás válasz4ms23924 KiB
26Hibás válasz8ms25824 KiB
27Hibás válasz8ms24968 KiB
28Hibás válasz8ms25676 KiB
29Hibás válasz8ms25532 KiB
30Hibás válasz8ms25360 KiB
31Hibás válasz8ms24796 KiB
32Hibás válasz8ms24900 KiB
subtask60/50
33Hibás válasz20ms30784 KiB
34Hibás válasz321ms101104 KiB
35Hibás válasz866ms162564 KiB
36Hibás válasz913ms195188 KiB
37Hibás válasz2.601s446864 KiB
38Hibás válasz2.197s468404 KiB
39Hibás válasz3.368s500580 KiB
40Hibás válasz3.124s486872 KiB
41Hibás válasz1.664s262572 KiB