Pagini recente » Cod sursa (job #1441468) | Cod sursa (job #662367) | Cod sursa (job #3036641) | Cod sursa (job #1938621) | Cod sursa (job #590697)
Cod sursa(job #590697)
#include<fstream>
#define NMAX 5000
#define MMAX 1000
#define COSTMAX 1000
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int A[NMAX][MMAX],i,j,n,m,s,T;
int COST[COSTMAX][COSTMAX];
int DIST[NMAX];
int ok=0;
int MAKE[NMAX];
int nod_curent,nod_sursa,nod;
void reinit()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
A[i][j]=NULL;
COST[i][j]=NULL;
DIST[i]=0;
}
}
void afis()
{
g<<"DA";
g<<"\n";
g<<"NU";
}
int check(int q,int p)
{
if(A[q][2]==A[2][q] && A[2][q]==A[2][p] && A[2][p]==A[p][2])
return 1;
return 0;
}
int main()
{
f>>T;
int x,y,cost;
while(T)
{
f>>n>>m>>s;
for(i=1;i<=n;i++)
f>>DIST[i];
for(i=1;i<=m;i++)
{
f>>x>>y>>cost;
A[x][y]=A[y][x]=1;
COST[x][y]=COST[y][x]=cost;
}
nod_sursa=s;
MAKE[1]=COST[nod_sursa][nod_sursa];
for(j=2;j<=n;j++)
{
if(A[nod_sursa][j]==1)
{
MAKE[j]=COST[nod_sursa][j];
}
else
{
if(check(nod_sursa,j))
MAKE[j]=COST[1][2]+COST[2][j];
}
}
for(j=1;j<=n;j++)
// g<<MAKE[i]<<" ";
T=0;
}
afis();
return 0;
}