Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int,int> pii;
- typedef pair<ll,ll> pll;
- ifstream fin("joc11.in");
- ofstream fout("joc11.out");
- int n,m,v[401][901],nodes[901],rezultat,etape,pozitie,rez[401],et[401],poz[401],winner,minim=-1;
- bool use[901];
- void dfs(int nod)
- {
- use[nod]=1;
- etape++;
- if(nodes[nod]==0)
- {
- rezultat=0;
- pozitie=nod;
- return;
- }
- if(nodes[nod]==9999)
- {
- rezultat=9999;
- pozitie=nod;
- return;
- }
- etape+=nodes[nod]%10;
- if(use[nodes[nod]/10])
- {
- rezultat=-1;
- pozitie=nod;
- return;
- }
- dfs(nodes[nod]/10);
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
- fin>>n>>m;
- for(int i=1;i<=n;i++)
- for(int j=1;j<=m;j++)
- fin>>v[i][j];
- for(int a=1;a<=n;a++)
- {
- for(int i=1;i<=m;i++)
- {
- nodes[i]=v[a][i];
- use[i]=0;
- }
- etape=0;
- rezultat=-2;
- pozitie=0;
- dfs(1);
- rez[a]=rezultat;
- et[a]=etape;
- poz[a]=pozitie;
- }
- for(int i=1;i<=n;i++)
- if(rez[i]==9999)
- {
- if(minim==-1||et[i]<minim)
- {
- minim=et[i];
- winner=i;
- }
- }
- int losers=0;
- for(int i=1;i<=n;i++)
- if(rez[i]==0)
- if(et[i]<=et[winner])
- losers++;
- fout<<winner<<" "<<poz[winner]<<" "<<et[winner]<<" "<<losers;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement