Pagini recente » Cod sursa (job #1102514) | Cod sursa (job #656947) | Cod sursa (job #332885) | Cod sursa (job #1889217) | Cod sursa (job #2267161)
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream fi("critice.in");
ofstream fo("critice.out");
const int NMAX = 1005;
struct triplet
{
int first, second, ord;
};
int n, m;
vector <triplet> G[NMAX];
int p[NMAX];
bool viz[NMAX];
int C[2][NMAX][NMAX], F[2][NMAX][NMAX];
queue <int> Q;
int bfs()
{
memset(viz, 0, sizeof(viz));
memset(p, 0, sizeof(p));
Q.push(1);
viz[1] = 1;
while (!Q.empty())
{
int curr = Q.front();
Q.pop();
if (curr == n)
continue;
for (auto vec: G[curr])
{
int v = vec.first, tip = vec.second;
if (F[tip][curr][v] == C[tip][curr][v] || viz[v])
continue;
Q.push(v);
viz[v] = 1;
p[v] = curr;
}
}
}
int main()
{
fi >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v, c;
fi >> u >> v >> c;
G[u].pb({v, 1, i});
G[v].pb({u, 0, i});
C[1][u][v] = c;
}
int flow = 0;
while (bfs())
{
for (auto vec: G[n])
{
int v = vec.first, tip = vec.second;
if (F[tip][v][n] == C[tip][v][n] || !viz[v])
continue;
p[n] = v;
int minim = INF, poz = 0;
for (int nod = n; nod != 1; nod = p[nod])
{
minim = min(minim, )
}
}
}
return 0;
}