Submission #45675383
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
// #define OPENIOBUF
namespace FastIO
{
class FastIOBase
{
protected:
#ifdef OPENIOBUF
static const int BUFSIZE=1<<16;
char buf[BUFSIZE+1];
int buf_p=0;
#endif
FILE *target;
FastIOBase(FILE *f): target(f){}
~FastIOBase()=default;
public:
#ifdef OPENIOBUF
virtual void flush()=0;
#endif
};
class FastOutput final: public FastIOBase
{
private:
void __putc(char x)
{
#ifdef OPENIOBUF
if(buf[buf_p++]=x,buf_p==BUFSIZE) flush();
#else
putc(x,target);
#endif
}
template<typename T>
void __write(T x)
{
char stk[64],*top=stk;
if(x<0) return __putc('-'),__write(-x);
do *(top++)=x%10,x/=10; while(x);
for(;top!=stk;__putc(*(--top)+'0'));
}
public:
FastOutput(FILE *f=stdout): FastIOBase(f) {}
#ifdef OPENIOBUF
~FastOutput() { flush(); }
void flush() { fwrite(buf,1,buf_p,target),buf_p=0; }
#endif
FastOutput &operator <<(char x)
{ return __putc(x),*this; }
FastOutput &operator <<(const char *s)
{ for(;*s;__putc(*(s++)));return *this; }
FastOutput &operator <<(const std::string &s)
{ return (*this)<<s.c_str(); }
template<typename T>
std::enable_if_t<std::is_integral<T>::value,FastOutput&> operator <<(const T &x)
{ return __write(x),*this; }
template<typename ...T>
void writesp(const T &...x)
{ std::initializer_list<int>{(this->operator<<(x),__putc(' '),0)...}; }
template<typename ...T>
void writeln(const T &...x)
{ std::initializer_list<int>{(this->operator<<(x),__putc('\n'),0)...}; }
template<typename Iter>
void writesp(Iter begin,Iter end)
{ while(begin!=end) (*this)<<*(begin++)<<' '; }
template<typename Iter>
void writeln(Iter begin,Iter end)
{ while(begin!=end) (*this)<<*(begin++)<<'\n'; }
}qout;
class FastInput final: public FastIOBase
{
private:
bool __eof;
public:
FastInput(FILE *f=stdin): FastIOBase(f),__eof(false)
#ifdef OPENIOBUF
{ buf_p=BUFSIZE; }
void flush() { buf[fread(buf,1,BUFSIZE,target)]=EOF,buf_p=0; }
bool eof()const { return buf[buf_p]==EOF; }
#else
{}
bool eof()const { return feof(target); }
#endif
char get()
{
if(__eof) return EOF;
#ifdef OPENIOBUF
if(buf_p==BUFSIZE) flush();
char ch=buf[buf_p++];
#else
char ch=getc(target);
#endif
return ~ch?ch:(__eof=true,EOF);
}
void unget(char c)
{
__eof=false;
#ifdef OPENIOBUF
buf_p--;
#else
ungetc(c,target);
#endif
}
explicit operator bool()const { return !__eof; }
FastInput &operator >>(char &x)
{ while(isspace(x=get()));return *this; }
template<typename T>
std::enable_if_t<std::is_integral<T>::value,FastInput&> operator >>(T &x)
{
char ch,sym=0;x=0;
while(isspace(ch=get()));
if(__eof) return *this;
if(ch=='-') sym=1,ch=get();
for(;isdigit(ch);x=(x<<1)+(x<<3)+(ch^48),ch=get());
return unget(ch),sym?x=-x:x,*this;
}
FastInput &operator >>(char *s)
{
while(isspace(*s=get()));
if(__eof) return *this;
for(;!isspace(*s) && !__eof;*(++s)=get());
return unget(*s),*s='\0',*this;
}
FastInput &operator >>(std::string &s)
{
char str_buf[(1<<8)+1]={0},*p=str_buf;
char *const buf_end=str_buf+(1<<8);
while(isspace(*p=get()));
if(__eof) return *this;
for(s.clear(),p++;;p=str_buf)
{
for(;p!=buf_end && !isspace(*p=get()) && !__eof;p++);
if(p!=buf_end) break;
s.append(str_buf);
}
unget(*p),*p='\0',s.append(str_buf);
return *this;
}
template<typename ...T>
void read(T &...x)
{ std::initializer_list<int>{(this->operator>>(x),0)...}; }
template<typename Iter>
void read(Iter begin,Iter end)
{ while(begin!=end) (*this)>>*(begin++); }
}qin;
} // namespace FastIO
using FastIO::qin,FastIO::qout;
using LL=long long;
using LD=long double;
using UI=unsigned int;
using ULL=unsigned long long;
constexpr LL INF=4e18;
#ifndef DADALZY
#define FILEIO(file) freopen(file".in","r",stdin),freopen(file".out","w",stdout)
#define LOG(...) void()
#else
#define FILEIO(file)
#define LOG(...) fprintf(stderr,__VA_ARGS__)
#endif
int n,m,a[200005];
vector<pair<int,int>> G[200005];
void dfs(int u,LL lim,int c)
{
if(a[u]) return;
a[u]=c;
for(auto &[v,w]: G[u])
{
if(w>=lim) continue;
dfs(v,lim,3^c);
}
}
bool check(LL lim)
{
fill(a+1,a+n+1,0);
for(int i=1;i<=n;i++) dfs(i,lim,1);
bool fl=true;
for(int u=1;u<=n;u++) for(auto &[v,w]: G[u])
{
if(w>=lim) continue;
fl&=(a[u]!=a[v]);
}
if(!fl) return false;
for(int u=1;u<=n;u++)
{
if(G[u].size()==1) continue;
LL mn=INF,se=INF;
for(auto &[v,w]: G[u])
{
if(w>=lim) continue;
if(w<mn) se=mn,mn=w;
else if(w<se) se=w;
}
if(mn+se<lim) return false;
}
return true;
}
int main()
{
qin>>n>>m;
for(int i=1,u,v,w;i<=m;i++)
{
qin>>u>>v>>w;
G[u].emplace_back(v,w);
G[v].emplace_back(u,w);
}
LL l=0,r=1e15;
while(l<r)
{
LL mid=(l+r+1)>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
qout<<l<<'\n';
return 0;
}
Submission Info
| Submission Time |
|
| Task |
C - Social Distance on Graph |
| User |
balalida |
| Language |
C++ 17 (gcc 12.2) |
| Score |
600 |
| Code Size |
4995 Byte |
| Status |
AC |
| Exec Time |
1881 ms |
| Memory |
24584 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_case_01.txt, 01_random_case_02.txt, 01_random_case_03.txt, 01_random_case_04.txt, 01_random_case_05.txt, 01_random_case_06.txt, 01_random_case_07.txt, 01_random_case_08.txt, 01_random_case_09.txt, 01_random_case_10.txt, 01_random_case_11.txt, 01_random_case_12.txt, 01_random_case_13.txt, 01_random_case_14.txt, 01_random_case_15.txt, 01_random_case_16.txt, 01_random_case_17.txt, 01_random_case_18.txt, 01_random_case_19.txt, 01_random_case_20.txt, 01_random_case_21.txt, 01_random_case_22.txt, 01_random_case_23.txt, 01_random_case_24.txt, 01_random_case_25.txt, 01_random_case_26.txt, 01_random_case_27.txt, 01_random_case_28.txt, 01_random_case_29.txt, 01_random_case_30.txt, 01_random_case_31.txt, 01_random_case_32.txt, 01_random_case_33.txt, 01_random_case_34.txt, 01_random_case_35.txt, 01_random_case_36.txt, 02_max_case_01.txt, 02_max_case_02.txt, 02_max_case_03.txt, 02_max_case_04.txt, 02_max_case_05.txt, 02_max_case_06.txt, 02_max_case_07.txt, 02_max_case_08.txt, 02_max_case_09.txt, 02_max_case_10.txt, 02_max_case_11.txt, 02_max_case_12.txt, 02_max_case_13.txt, 02_max_case_14.txt, 02_max_case_15.txt, 02_max_case_16.txt, 02_max_case_17.txt, 02_max_case_18.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_01.txt |
AC |
3 ms |
8256 KiB |
| 00_sample_02.txt |
AC |
3 ms |
8184 KiB |
| 00_sample_03.txt |
AC |
3 ms |
8140 KiB |
| 01_random_case_01.txt |
AC |
837 ms |
18144 KiB |
| 01_random_case_02.txt |
AC |
1081 ms |
17800 KiB |
| 01_random_case_03.txt |
AC |
1085 ms |
18016 KiB |
| 01_random_case_04.txt |
AC |
677 ms |
17492 KiB |
| 01_random_case_05.txt |
AC |
1575 ms |
18452 KiB |
| 01_random_case_06.txt |
AC |
1253 ms |
17556 KiB |
| 01_random_case_07.txt |
AC |
639 ms |
18036 KiB |
| 01_random_case_08.txt |
AC |
436 ms |
14456 KiB |
| 01_random_case_09.txt |
AC |
585 ms |
15276 KiB |
| 01_random_case_10.txt |
AC |
681 ms |
18084 KiB |
| 01_random_case_11.txt |
AC |
821 ms |
17904 KiB |
| 01_random_case_12.txt |
AC |
758 ms |
18068 KiB |
| 01_random_case_13.txt |
AC |
908 ms |
16288 KiB |
| 01_random_case_14.txt |
AC |
1700 ms |
18584 KiB |
| 01_random_case_15.txt |
AC |
1102 ms |
16180 KiB |
| 01_random_case_16.txt |
AC |
610 ms |
14480 KiB |
| 01_random_case_17.txt |
AC |
462 ms |
14348 KiB |
| 01_random_case_18.txt |
AC |
433 ms |
14720 KiB |
| 01_random_case_19.txt |
AC |
674 ms |
17960 KiB |
| 01_random_case_20.txt |
AC |
1038 ms |
17800 KiB |
| 01_random_case_21.txt |
AC |
951 ms |
17948 KiB |
| 01_random_case_22.txt |
AC |
916 ms |
17168 KiB |
| 01_random_case_23.txt |
AC |
978 ms |
18488 KiB |
| 01_random_case_24.txt |
AC |
943 ms |
17136 KiB |
| 01_random_case_25.txt |
AC |
477 ms |
15916 KiB |
| 01_random_case_26.txt |
AC |
285 ms |
15448 KiB |
| 01_random_case_27.txt |
AC |
430 ms |
15580 KiB |
| 01_random_case_28.txt |
AC |
676 ms |
18128 KiB |
| 01_random_case_29.txt |
AC |
1032 ms |
17920 KiB |
| 01_random_case_30.txt |
AC |
1138 ms |
18168 KiB |
| 01_random_case_31.txt |
AC |
1029 ms |
17520 KiB |
| 01_random_case_32.txt |
AC |
1264 ms |
18672 KiB |
| 01_random_case_33.txt |
AC |
1159 ms |
17776 KiB |
| 01_random_case_34.txt |
AC |
825 ms |
17696 KiB |
| 01_random_case_35.txt |
AC |
518 ms |
15532 KiB |
| 01_random_case_36.txt |
AC |
657 ms |
15736 KiB |
| 02_max_case_01.txt |
AC |
673 ms |
16328 KiB |
| 02_max_case_02.txt |
AC |
1022 ms |
16408 KiB |
| 02_max_case_03.txt |
AC |
1026 ms |
16344 KiB |
| 02_max_case_04.txt |
AC |
878 ms |
16184 KiB |
| 02_max_case_05.txt |
AC |
1881 ms |
18912 KiB |
| 02_max_case_06.txt |
AC |
1246 ms |
16208 KiB |
| 02_max_case_07.txt |
AC |
312 ms |
16392 KiB |
| 02_max_case_08.txt |
AC |
249 ms |
16276 KiB |
| 02_max_case_09.txt |
AC |
404 ms |
16440 KiB |
| 02_max_case_10.txt |
AC |
898 ms |
16236 KiB |
| 02_max_case_11.txt |
AC |
827 ms |
16520 KiB |
| 02_max_case_12.txt |
AC |
925 ms |
16364 KiB |
| 02_max_case_13.txt |
AC |
1170 ms |
16216 KiB |
| 02_max_case_14.txt |
AC |
1516 ms |
18688 KiB |
| 02_max_case_15.txt |
AC |
1099 ms |
16384 KiB |
| 02_max_case_16.txt |
AC |
457 ms |
16672 KiB |
| 02_max_case_17.txt |
AC |
242 ms |
16440 KiB |
| 02_max_case_18.txt |
AC |
353 ms |
16352 KiB |
| 03_handmade_01.txt |
AC |
3 ms |
8248 KiB |
| 03_handmade_02.txt |
AC |
3 ms |
8124 KiB |
| 03_handmade_03.txt |
AC |
271 ms |
24580 KiB |
| 03_handmade_04.txt |
AC |
269 ms |
24584 KiB |
| 03_handmade_05.txt |
AC |
187 ms |
24556 KiB |