Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- #include <bitset>
- using namespace std;
- ifstream fin("Ohoo.in");
- ofstream fout("Ohoo.out");
- #define Nmax 100005
- vector<pair<int,int> > v[Nmax];
- bitset<Nmax> vis;
- bool t;
- int n, m;
- void dfs(int node, int d)
- {
- if(node==n) t=1;
- else
- {
- vis[node] = 1;
- for (auto i : v[node])
- if (!t && i.second<=d && !vis[i.first])
- {dfs(i.first,d); }
- }
- }
- int main()
- {
- fin >> n >> m;
- int mz = 0;
- for (int i = 1, x, y, c; i <= m; ++i)
- {
- fin >> x >> y>> c;
- v[x].push_back(make_pair(y,c));
- v[y].push_back(make_pair(x,c));
- if(c>mz) mz=c;
- }
- int st=1,dr=mz,sol=mz;
- while(st<=dr)
- {
- int mij=(st+dr)/2;
- for (int i=1;i<=n;++i) vis[i]=0;
- dfs(1,mij);
- if(t) {sol=mij; t=0; dr=mij-1;}
- else st=mij+1;
- }
- fout<<sol<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement