l’idea era quella di usare l’algoritmo di floyd-warshall per calcolare tutte le tasse minime e prendere poi quella massima. Il programma sta nei tempi ma non negli output. Dipende dalla dimensione dei double o è un problema di algoritmo?
#include<bits/stdc++.h>
using namespace std;
double mat[300][300];
int main()
{
int N,M,a,b,c;
cin>>N>>M;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
mat[i][j]=0;
mat[i][i]=1000;
}
for(int i=0;i<M;i++)
{
cin>>a>>b>>c;
mat[a][b]=1000-c;
}
int mx=10001,I,J;
for(int k=0;k<N;k++)
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
{
if(mat[i][j]<mat[i][k]*mat[k][j]/1000)
{
mat[i][j]=mat[i][k]*mat[k][j]/1000;
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(mat[i][j]<mx)
{
I=i;
J=j;
mx=mat[i][j];
}
}
}
cout<<I<<' '<<J;
}
edit:ho provato a rappresentare i valori di tasse come frazioni, semplificandole con l’MCD ma i subtask sono peggiorati sul tempo (1 sfora il tl) e sulla correttezza dell’output